有一个默认的日历应用程序。
它从下一个视图控制器开始,并且后退按钮已经在那里,就像在此视图控制器之前启动了其他视图控制器一样:
按下返回按钮时,您将获得下一个视图控制器:
他们是如何做到的?
在我的应用中,我需要相同的逻辑(以最新或默认类别启动视图控制器,但用户可以按“后退”按钮选择其他类别)
答案 0 :(得分:1)
如果要执行此操作,首先要使用pushViewController(animated:)
将月份视图推入导航堆栈,并在根视图控制器的animated: false
方法中使用viewWillAppear(animated:)
。日历将向用户显示在导航堆栈深一层。
因此,第一个控制器是年视图,然后月视图是第二个推入堆栈的视图,但这一切都发生在用户看到任何视图之前。很简单,对吧?
这里有the docs for UINavigationController,以防万一。
答案 1 :(得分:0)
我认为您想要的是在启动时一次推送视图控制器。一种简单的方法是将UINavigationController
子类化,并将其分配给情节提要中的根导航控制器。然后只需使用您的子类的viewWillAppear
方法进行工作,因为在启动时将只调用一次。
当然,如果将推送代码放入第一个视图控制器的viewWillAppear
中,则使用标记仅加载下一个视图控制器一次也可以实现相同的结果。
@interface MyNavigationController : UINavigationController
@end
@implementation MyNavigationController
- (void)viewWillAppear:(BOOL)animated {
[super viewWillAppear:animated];
UIViewController *secondVC = [self.storyboard instantiateViewControllerWithIdentifier:@"secondVC"];
[self pushViewController:secondVC animated:NO];
}
@end