Tag: uinavigationcontroller

当我应该使用导航控制器?

我不知道什么时候应该使用导航控制器,而不是在正常的View Controller中使用segue? 如果使用segue,Modal和Push segue有什么不同? 你可以给我一个例子吗?

导航栏中的UISegmentedControl和后退button

我正在编程添加一个UISegmentedControl到导航栏的地方应该是titleView 。 但是,正如苹果文档在titleView下titleView , 如果leftBarButtonItem不为零 ,则该属性将被忽略 。 但我想要有后退button。 就像他们用自己的形象说明的一样! 下面是我添加UISegmentedControl的代码。 self.navigationItem.leftBarButtonItem = nil; UISegmentedControl *statFilter = [[UISegmentedControl alloc] initWithItems:[NSArray arrayWithObjects:@"Filter_Personnal", @"Filter_Department", @"Filter_Company", nil]; [statFilter setSegmentedControlStyle:UISegmentedControlStyleBar]; self.navigationItem.titleView = statFilter; 有没有另一种方法来添加一个UISegmentedControl以及后退button? 谢谢。

取消交互式UINavigationControllerpopup手势不会调用UINavigationControllerDelegate方法

如果拖动UIViewController以在UINavigationController开始交互式popup转换,则当前窗口下方的UIViewController具有viewWillAppear: called,随后是UINavigationControllerDelegate方法navigationController:willShowViewController:animated: 如果取消转换, viewWillAppear:预期方式在顶部视图控制器上调用viewWillAppear:和viewDidAppear: 但是, navigationController:willShowViewController:animated:委托方法navigationController:willShowViewController:animated:或navigationController:didShowViewController:animated: 至less应该调用其中的一个或两个,考虑调用UIViewController视图生命周期方法。 我想知道这是故意的还是UINavigationController的错误。 我真正需要的是能够在UINavigationController子类或其UINavigationControllerDelegate看到何时取消交互式popup窗口。 有没有一个明显的方法来做到这一点? 编辑 我仍然在寻找一个解决scheme,但要提一下,我已经把这个问题报告为苹果的一个bug。 查看文档,这些委托方法不应该被调用,特别是考虑到调用等效的视图生命周期方法。 EDIT2 我的雷达票(16823313)今天(2015年5月21日)closures,并按预期标记。 🙁 工程部门根据以下信息确定此问题的行为如预期的那样: 这实际上是正确的行为。 从B – > A发生的导航转换,如果在转换过程中取消它,则不会得到didShowViewController:方法。 这个过渡的取消不应该被认为是从A→B的过渡,因为你从来没有真正达到A. 查看[Will / Did]出现仍然应该如期调用。 这是一个令人失望的情况,因为这是违反直觉的,但是我的回答中的解决方法在可预见的未来应该可以正常工作,至less对我来说是这样。

如何创buildpinterest风格隐藏/取消隐藏导航/标签栏?

如何创build隐藏/取消隐藏的导航栏,如pinterest和许多其他应用程序正在做什么? 我知道基本的想法是使用UIScrollView委托,并检测我是否向上或向下滚动,并显示导航栏的基础上。 那么如果导航栏被隐藏,我也应该调整navcontroller视图的高度? 这个怎么用?

通过导航后退button传递数据

我在这种情况下: 我从进度表传递4个数组到详细的练习使用准备赛格,它工作正常! 当我试图将数据从细节练习控制器传回到进度表控制器时,问题就开始了。 我想使用默认的导航返回button返回到父视图。 其实我使用这个代码,但它不工作,以及从孩子传递到父视图的数据,但我看不到进展表中的结果,似乎我需要刷新,但我也尝试了reloadData在viewDidLoad之后,它不起作用。 任何build议? 谢谢。 override func viewWillDisappear(animated : Bool) { super.viewWillDisappear(animated) if (self.isMovingFromParentViewController()){ print("n'drio") let historyView = self.storyboard!.instantiateViewControllerWithIdentifier("historyView") as! HistoryTableViewController historyView.isFirstTime = false historyView.arrayData = arrayDataDetails historyView.arrayRipetizioni = arrayRipetizioniDetails historyView.arrayPeso = arrayPesoDetails historyView.arrayRecupero = arrayRecuperoDetails historyView.tableView.reloadData() } }

如何从一个视图控制器popup到另一个视图控制器

使用iOS我现在有15个ViewController我想从一个ViewControllerpopup到另一个View Controller。 我正在使用这个代码: SecondViewController *Sec=[SecondViewController alloc]init]; [self.navigationController popViewController:Sec animated:YES]; 这显示错误, this ViewController not exist ,然后我使用这个代码: NSArray *array = [self.navigationController viewControllers]; [self.navigationController popToViewController:[array objectAtIndex:1] animated:YES]; 这个代码是正确的从thirdViewControllerpopup到secondViewController。 但是当我们从第九(第九)ViewControllerpopup到第五(第五)ViewController时发生了什么,然后我在第九(第九)ViewController中使用这个代码: NSArray *array = [self.navigationController viewControllers]; [self.navigationController popToViewController:[array objectAtIndex:4] animated:YES]; 它不会从第九(9)视图控制器到第五(第五)视图控制器,除了它将第九(9)视图控制器popup到八(8)视图控制器。 当我们使用这一行时,我不知道发生了什么事情: NSArray *array = [self.navigationController viewControllers]; NsLog(@"array = %@",array); 当我们在Ninth(9th)ViewController使用这个。 NsLog显示: array= First(1st)ViewController; Second(2nd)ViewController; Eight(8th)ViewController; Ninth(9th)ViewController; 我不知道为什么只有四个视图控制器显示。 每当我使用15个视图控制器。 每个视图控制器中会发生此问题。 […]

iOS – UINavigationController添加多个正确的项目?

我有一个UINavigationController 。 我试图在我的导航栏的右侧添加多个button。 我怎样才能做到这一点? 需要什么样的button? UIBarButton或UINavigationItem ?

UINavigationBar在推动时改变颜色

在UINavigationBar在不同的视图中使用了2种不同的色调颜色。 这两种观点都是用这种方法改变颜色的: override func viewWillAppear(animated: Bool) { super.viewWillAppear(animated) self.navigationController?.navigationBar.barTintColor = COLOR } 当我点击后退button时,颜色没有平滑地变化(你可以看到最后一秒闪烁)。 但是,如果只是向后滑动视图而不是点击后退button,一切都可以。 如何在两种情况下平滑过渡?

自定义导航栏

我正在抓取运球,发现附带的devise。 我想知道如何做这样的自定义导航栏。 我的意思是如何创build一次导航栏,并隐式重复使用它为每个视图控制器。 我想有一种根视图控制器,并inheritance其他视图控制器,但我不知道如何做到这一点。 任何想法或链接将appreachated! 干杯。 西里尔

在透明导航栏之间转换为半透明

在苹果公司最近发布的Remote应用程序中,我注意到导航栏的行为方式是独一无二的,我无法重现它。 当popup“正在播放”视图控制器时,导航栏对于“正在播放”视图控制器保持透明,并且库视图控制器的导航栏也保持半透明(屏幕截图1)。 我想弄清楚他们是否使用两个导航控制器或只有一个。 就我个人而言,我觉得他们只使用了一个,原因有二:(1)交互式popup手势已启用; (2)在库视图控制器中按“正在播放”button时,在现在正在播放的画面完成“推视图控制器”animation之前,导航栏变为透明(截图2)。 这是我推动我的视图控制器(将导航栏设置为透明)时遇到的行为。 所以我的问题是:苹果如何呈现两个视图控制器的导航栏,就像他们是个人的(如截图1),即使是酒吧button,导航标题等…是100%在不透明的时候切换(通常时当新的控制器被按下时,按压/popup前一个视图控制器的button和标题淡出)。 我已经尝试在视图控制器中使用viewDidAppear和viewWillAppear中的酒吧色调颜色,但不能重现相同的行为,并且不能防止酒吧button褪色。 天哪,我希望我已经解释清楚了,我只是想着它而感到困惑! 截图1(Popping): 截图2(推):