Tag: uinavigationcontroller

在导航返回到UINavigationController堆栈中的前一个控制器之前,向用户提示UIAlertView

我试图在导航到前一个控制器之前提示一个UIAlertView,并在用户决定停留在同一个视图控制器上时阻止导航。 使用CCTBackButtonActionHelper ,UIALertView可以很容易地生成,但我唯一的问题是,它会改变后退button的颜色为灰色,就像单击任何禁用的UIBarButton控件。 但是,单击导航栏上的任何位置都会恢复其原始颜色。 那么我怎么能防止改变它的颜色? 这就是我现在正在做的事情。 在CustomNavigationContoller.m中 – (BOOL)navigationBar:(UINavigationBar *)navigationBar shouldPopItem:(UINavigationItem *)item { BOOL should = [[CCTBackButtonActionHelper sharedInstance] navigationController:self navigationBar:navigationBar shouldPopItem:item]; if (!should) { return NO; } return [super navigationBar:navigationBar shouldPopItem:item]; } 在CustomViewController.m中 #pragma mark – Back button – (void)cct_navigationBar:(UINavigationBar *)navigationBar willPopItem:(UINavigationItem *)item { UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:nil message:@"Are you sure you want […]

进入前景时如何保留UIScrollView的框架?

这个问题讨论了如何在UIScrollView中的视图之间创build空白。 约定的方法是增加UIScrollView框架的宽度,以在将滚动过去的视图之间创build间隙。 但是,当滚动视图是UINavigationController的子视图时,会出现问题。 UINavigationController在-viewDidLoad设置后,更改UIScrollView的框架。 提出的解决scheme是在-viewDidAppear改变帧大小,在这一点上UINavigationController已经完成了改变的事情,改变将坚持。 – (void)viewDidAppear:(BOOL)animated { CGRect frame = self.view.frame; frame.size.width += 20; // This gives a 20px gap width self.view.frame = frame; } 我一直在我的应用程序中使用它,它一直工作正常,但我遇到的问题,当应用程序发送到背景,然后再次检索。 看来,UINavigationController再次改变框架,将其重置为默认宽度,但是这次不调用-viewDidAppear ,所以从不改变。 我已经尝试注册UIApplicationWillEnterForegroundNotification和UIApplicationDidBecomeActiveNotification但这两个似乎都发生在UINavigationController改变的东西之前,所以在这一点改变框架没有效果。 在什么时候我应该尝试改变帧的大小,以便它会坚持,或者我可以以某种方式防止UINavigationController在第一个地方改变框架? 编辑: 所以我subclassed UIScrollView,并发现一个称为[UIViewControllerWrapperView setFrame:]被调用,这反过来调用我的子类的-setFrame:方法来设置帧大小。 我不知道什么UIViewControllerWrapperView是或不是,我不知道它将有可能在它已经完成它的事情并正确设置帧大小后跳入。 我会继续调查。

自定义UINavigationController UIToolbar的子类

我需要在UINavigationController使用一个子类UIToolbar 。 我知道这可以通过Interface Builder来完成,但是我需要通过编程来完成。 该文档声明, UINavigationController工具栏属性是只读的,所以我有点在我如何继续的损失。 有关: 自定义的UINavigationController UIToolbar背景图片

新视图控制器被推入堆栈后,UIViewanimation继续运行

解决了。 可笑的尴尬。 我没有使用实例variables,我在实现中将它声明为花括号。 真的很挣扎。 我有一个视图控制器pipe理一个animation倒数计时器。 animation是使用recursion的UIViewanimation和一个简单的int ivar减less。 像下面这样(这是一个简化的片段): – (void) animate { [UIView animateWithDuration:0.75f delay:0.25f options:UIViewAnimationCurveEaseInOut animations:^{ aView.center = newCenter; counter–; } completion:^(BOOL finished) { if (counter != 0) [self animate]; }]; } 在倒计时期间,用户可以轻扫以进入下一步,而不是等待计时器完成倒计时。 当用户刷新一个新的视图控制器 – 当前视图控制器的一个新实例 – 被压入堆栈,并使用下一步的值: TimerViewController * vc = (TimerViewController*)[self.storyboard instantiateViewControllerWithIdentifier:@"Timer"]; [vc setTask: _task + 1]; [self.navigationController pushViewController:vc animated:YES]; 新的视图控制器滑动到位并开始倒计时,但前一个视图控制器继续animation,在debugging器中,我可以清楚地看到这个视图控制器的另一个实例,我将popup一个回到,仍然运行animation,导致一个视图移动不正常。 两个不同的视图控制器实例是animation相同的aView实例? […]

UIBarButtonItem标题文本始终是全局色调颜色

iOS 7.0及更高版本 在AppDelegate.m,我设置我的全球tintColor: self.window.tintColor = myGlobalTintColor; 。 在我的表格视图控制器,我想在导航栏中的红色垃圾桶button,同时编辑表格视图单元格,我有这样的: – (void)setEditing:(BOOL)editing animated:(BOOL)animate { [super setEditing:editing animated:animate]; if (editing) { // Start editing self.deleteBarButtonItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemTrash target:self action:@selector(deleteButtonPressed)]; [self.deleteBarButtonItem setTitleTextAttributes:[NSDictionary dictionaryWithObjectsAndKeys: [UIColor redColor], NSForegroundColorAttributeName, nil] forState:UIControlStateNormal]; self.navigationItem.rightBarButtonItems = @[self.deleteBarButtonItem]; } } 尽pipe将NSForegroundColorAttributeName设置为[UIColor redColor],的代码行[UIColor redColor],我从来没有看到红色。 当它设置为.enabled = YES的button,我只是看到它在我的全球色彩,像所有其他button: 我已经梳理了我的代码,我确定没有其他位置在我设置其他任何地方myGlobalTintColor 。 值得注意的是,这个UITableViewController是从一个故事板实例化的。 在AppDelegate.m中注释掉这行只是将所有的东西都发送回默认的蓝色tintColor ,但是我仍然没有在删除button上看到红色。

dismissModalViewControllerAnimated不起作用

我有一个UITabbarController与UINavigationController。 NavigationController中的视图呈现一个MVC(AddClockNavigationController)。 这个MVC有一个带有视图的笔尖和一个UINavigationController。 NavigationController.view作为子视图添加到MVC的视图中。 我的MVC中的NavigationController有两个button,一个取消和一个完成。 当按其中任何一个MVC应该被解雇。 这些button的IBActions在UINavigationController的视图(AddClockViewController)中,但是每当按下它们时,MVC都不会消失。 如果我把这些动作放到MVC中,它确实会消失。 如果我把这个函数放在我的MVC中,并使用[self.parentViewController myFunction]从我的viewController调用它,它不会消失。 我怎样才能让它从我的视野中消失? 我想我的ex is很乱,但我希望你能理解。 我的IB观点: 最好的祝福, 保罗·佩伦 编辑我已经尝试过[self dismissModalViewControllerAnimated:YES]; , [self.parentViewController dismissModalViewControllerAnimated:YES]; , [self.navigationController dismissModalViewControllerAnimated:YES]; , [self.parentViewController.navigationController dismissModalViewControllerAnimated:YES]; 如前所述,在父视图中使用一个函数来解除它。 没有任何工作

在ios中获取状态栏的正确颜色

好的,我有一些麻烦着色我的状态栏。 我有一个非常简单的应用程序,在两个视图之间移动。 我试着用这个代码着色导航控制器的状态栏 [[UINavigationBar appearance] setBarTintColor:UIColorFromRGB(0x067AB5)]; 但是,直到我删除了“导航控制器”的状态栏,并拖动状态栏到故事板,它才起作用。 然后我想状态栏匹配的颜色,所以我删除了导航控制器,它的工作! 我认为导航控制器状态栏不允许状态栏着色正确。 但是,没有导航控制器,我不能添加“推”赛格。 这是导航控制器的外观 而这里没有 我不知道解决scheme是什么,因为我需要导航控制器为此工作。 出于某种原因,没有“显示”选项。 让我知道我该怎么做。 谢谢!

为什么self.navigationController pushViewController不工作?

我有一个 UIViewController-> UINavigationBar + UITableView 多一点解释 我通过UIBuilder制作 1:用XIB文件创build一个新的UIViewController 2:使用UIBuiler我把一个UINavigationController 3:然后我把UITableView下的navigationBar UITableView ,所以它给了我.. 答:UIViewController-> UINavigationBar + UITableView 现在我正在从正在工作的Web服务加载UITableView中的数据。 我又用samconfiguration了一个xib B:UIViewController-> UINavigationBar + UITableView 所以现在当我尝试推视图B使用下面的代码视图A …它不会在所有的工作… SelectSiteViewController *siteViewController = [[SelectSiteViewController alloc] initWithNibName:@"SelectSiteViewController" bundle:nil]; [self.navigationController pushViewController:siteViewController animated:YES]; 当我检查UINavigationController *nav = self.navigation 导航是0x0,我假设为零。 有人可以告诉我这里有什么错误吗?为什么它是零…我怎样才能使它工作.. 非常感谢….我真的很感激任何帮助

返回到先前的视图控制器的帮助下滑(向左)

我有2个视图控制器。 1: login页面(主视图控制器) 2: 注册页面 。假设我想从注册页面返回到login页面。 如何解决这个问题(与导航控制器),我是新的迅速和iOS。 这是我在AppDelegate.swift中的代码。 func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool { self.window = UIWindow(frame: UIScreen.mainScreen().bounds) self.window?.backgroundColor = UIColor.whiteColor() self.window?.rootViewController = ViewController() self.window?.makeKeyAndVisible() return true }

ios SWRevealViewController从后到前popup

我有以下故事板使用SWRevealViewController。 这个想法是,我可以导航到一个屏幕,从一个“前”SWRevalVC homeVC或从一个“后”SWRevealVC menuVC。 当我到“MyAnotherVC”并点击后退button时,我总想去“MYHomeVC”。 但是,如果我已经通过“MyMenyVC”导航,目前没有办法去其他视图控制器。 我想这很容易被黑客入侵,但是我想知道是否有一个简单有效的方法。