Tag: uinavigationcontroller

Swift – 远程通知和导航控制器stream程

我正在设置推送通知,我将发送到设备的一些数据,我想加载导航控制器堆栈上的某个视图。 但是,我想要保持导航堆栈完好,即目标视图控制器应该仍然有一个导航栏与后退button向后回到前一个视图控制器等。 stream程:导航控制器 – >根视图控制器 – >目标控制器。 我如何才能在UINavigationController堆栈中显示特定的非root用户视图控制器,而不会丢失层次结构和function? 现在我正在做这个,它显示了正确的视图控制器,但没有导航栏: let idPushNotification = userInfo["idPushNotification"] as String let storyboard = UIStoryboard(name: "Main", bundle: nil) let destinationViewController = storyboard.instantiateViewControllerWithIdentifier("DestinationViewController") as DestinationViewController destinationViewController.idPushNotification = idPushNotification.toInt()! let navigationController = self.window?.destinationViewController; navigationController?.presentViewController(destinationViewController, animated: false, completion: nil)

在iOS中离开视图之前要求用户确认

我需要在用户离开某个视图之前显示一个UIAlertView ,或者点击一个“后退”导航栏button,或者点击我拥有的标签栏中的一个标签项,以便要求他确认。 这将是一个双button提醒,一个“取消”一个留在视图中,一个“接受”一个离开。 我需要这样做,因为我必须让用户意识到如果离开,未保存的更改将会丢失。 我试图通过在viewWillDisappear:方法中创build并显示警报视图来执行此操作: – (void)viewWillDisappear:(BOOL)animated { UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:NSLocalizedString(@"Exit", @"") message:NSLocalizedString(@"Are you sure you want to leave? Changes will be discarded", @"") delegate:self cancelButtonTitle:NSLocalizedString(@"Cancel", @"") otherButtonTitles:NSLocalizedString(@"Accept", @""), nil]; [alertView show]; [super viewWillDisappear:animated]; } 但是,无论如何,视图是popup窗口,警告视图显示之后,应用程序崩溃,因为它的委托是已经从导航堆栈已经popup的视图控制器…我没有find解决这个情况的方法,可以有人帮我吗? 谢谢!

加载一些视图时如何隐藏UITabBarView?

我正在开发一个iPhone应用程序,我有一个UITabBarController,每个TabBarItem有一个UINavigationController。 我希望在一定程度的导航之后隐藏TabBar,并将其replace为全屏视图,就像iPod应用程序一样,TabBar在到达媒体播放器时隐藏起来,在返回到播放列表时返回,或者随你。 任何帮助或想法是高度赞赏

pushViewController无法在iOS 5上工作(iOS 6上的确定)

我有一个UINavigationController,在屏幕上显示几个button。 他们都只是使用该行: myViewController *newView = [[myViewController alloc] initWithNibName:@"myViewController" bundle:nil]; [[self navigationController] pushViewController:newView animated:YES]; 转换到下一个视图。 我有一个这样的视图控制器,但是导致在这个只在iOS 5上的线崩溃。它在iOS 6上完美的罚款。我感到困惑。 没有真正的细节崩溃。 这是一个强调main.m行的SIGABRT: exitStatus = UIApplicationMain( argc, argv, nil, NSStringFromClass([ApplicationDelegate class])); 我没有任何线索…

是否可以从视图的NIB设置navigationitem.title?

我从一个NIB(initWithNibName)加载一个新的视图,然后我把它推入导航控制器堆栈(pushViewController)。 为了有一个适当的“后退”button,每个视图应该有一个标题。 不幸的是,我没有设法find一种方法来设置界面生成器中的视图标题。 它可以在运行时完成: – (void)viewDidLoad { [super viewDidLoad]; self.navigationItem.title = @"MyTitle"; } 但是我没有在NIB的devise时间里做到这一点。 有没有办法呢? 谢谢。 我刚刚意识到我的问题不是100%正确的。 事实上,我正在寻找一种方法来通过NIB设置ViewController的标题。 和UIView在NIB不同于UIViewController(它有我试图改变的标题属性)。 所以我的问题是…有些不同。 🙂

如何确定从iOS中的背景返回到前台加载哪个视图?

我有一个应用程序有多个视图。 当我从背景中回到前景时,我想确定我目前在哪个视图。 我该怎么做? [编辑] 我明白navigationController的visibleViewController属性可能会有所帮助。 但是,我想知道如何在UIViewController对象中使用它返回的指针。 我们如何比较指针? 一些代码片段会非常有帮助。

如何将数据传递给视图控制器并在将其推送到导航堆栈之前加载它?

我有一个视图控制器与集合视图,当我单击一个单元格时,我将一个variables传递给另一个视图控制器,然后将其推到导航堆栈上。 func collectionView(collectionView: UICollectionView, didSelectItemAtIndexPath indexPath: NSIndexPath) { self.performSegueWithIdentifier("nextVC", sender: self.userArray[indexPath.row]) } 这是我如何发送variables: override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { super.prepareForSegue(segue, sender: sender) let nextVC = segue.destinationViewController as! NextVC if let senderId = sender!.objectForKey("uId") { nextVC.userId = senderId as! String } } 下一个视图控制器(nextVC)有很多东西在上面。 我尽我所能去优化它,但是加载所有的东西还是需要一些时间的。 有没有一种方法可以为segue做准备,传递variables,让下一个vc做它的事情,然后当它完成加载,实际上继续它? (或显示它)? 我看到其他一些讨论预加载视图控制器的问题,但是没有一个涉及传递variables。 这个variables非常重要,因为下一个VC中的所有东西都必须知道这个variables(基于被触摸的单元格),否则将无法加载。 我希望我解释得很好,谢谢你的时间。

在UIPopoverController中导航

我有一个包含表视图的UIPopoverController 。 这popup控制器显示很好,我已经设置委托didSelectRowAtIndexPath就好了。 现在,我想根据点击的表项进行一些“细节视图控制器”的转换。 然后在目的地视图上,它有一个像pushViewController后退button,但pushViewController不佳。 它不会导航到详细视图控制器。 这是我的didSelectRowAtIndexPath : – (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { [tableView deselectRowAtIndexPath:indexPath animated:YES]; DetailSummaryViewController *detailVC = [[DetailSummaryViewController alloc] initWithNibName:@"DetailSummaryViewController" bundle:nil]; [self.navigationController pushViewController:detailVC animated:YES]; } 这是我的popup式方法 – (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath { CalendarCell *cell = (CalendarCell *)[collectionView cellForItemAtIndexPath:indexPath]; UIPopoverController *popC = [[UIPopoverController alloc] initWithContentViewController:[SummaryViewController new]]; [popC setPopoverContentSize:CGSizeMake(320, 400)]; [self setPop:popC]; [[self pop] […]

popup到根,然后在iPhone上执行segue

我正在运行iOS 6.0故事板启用 我有一个NavController链接到一个TableViewController。 这个TableView可以延续到AViewController或BViewController。 当我在A时,我想弹回到根目录并用这一行执行到B的继续: UINavigationController *nav = self.navigationController; [nav popToRootViewControllerAnimated:YES]; [nav performSegueWithIdentifier:@"GoToB" sender:self]; 我检查了故事板,GoToB确实存在,并从TableViewController链接到BViewController Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'Receiver (<NavMainViewController: 0xb921fa0>) has no segue with identifier 'GoToB'' 我错过了什么?

从右到左UINavigationController

我一直使用UINavigationController与UITableView控制器一起实现我的应用程序的分层导航。 不幸的是用户界面是用希伯来语,所以一切都必须从右到左才有意义。 真正的问题是导航控制器,滑动animation方向和后退button的位置。 到目前为止,我还没有find任何优雅的解决scheme,取得了一些有限的成功,重写popup和推动方法之间创build转换之间的意见,如下所示: 如何更改推动和stream行animation在基于导航的应用程序 但这是一个非常有限的解决scheme,它看起来不正确。 你有什么build议吗? 我真的必须用新的东西重写/复制导航控制器吗? 如果是这样,你会build议inheritanceUINavigationController或UIViewController?