【问题标题】:What is the design pattern for navigating between ViewControllers?在 ViewController 之间导航的设计模式是什么?
【发布时间】:2014-05-16 01:44:33
【问题描述】:

我目前有 1 个故事板,其中包含 2 个视图控制器:ViewController 和 TableViewController。 ViewController 是登录视图,TableViewController 是显示结果的页面(结果视图)。

目前,我没有创建从登录视图到结果视图的转场。相反,在登录视图中,在用户按下登录按钮并通过身份验证后,我以编程方式推送到结果视图,如下所示。

XYZResultsTableViewController* controller = [[XYZResultsTableViewController alloc]init];
UINavigationController *navController = self.navigationController;
[navController popViewControllerAnimated:NO];
[navController pushViewController:controller animated:YES];

确实,结果视图显示,但左上角有一个“

所以,我的问题是:

  • 如何从视图堆栈中删除登录视图? (因此结果视图上的后退按钮不显示)
  • 这种在视图之间导航的“程序化”方式“不好”吗?意思是,我应该依赖故事板和转场吗?我应该导航到一个新的故事板吗(我已经在 SO 上看到过这个问题,虽然我还没有访问过它)?

我是新人,所以非常感谢任何帮助。

【问题讨论】:

    标签: ios7 uiviewcontroller segue uistoryboardsegue


    【解决方案1】:

    如果你不想使用导航堆栈,你必须使用 presentViewController 而不是 pushViewController

     XYZResultsTableViewController* controller = [[XYZResultsTableViewController alloc]init];
    [viewController1 presentViewController:controller animated:YES];//viewcontroller1 is current view controller
    

    除非您想在要显示的 viewController 中显示 navigationController 堆栈,否则切勿使用下面的代码

      /*XYZResultsTableViewController* controller = [[XYZResultsTableViewController alloc]init];
     UINavigationController *navController = self.navigationController;
     [navController popViewControllerAnimated:NO];
     [navController pushViewController:controller animated:YES];  */
    

    有关此difference between presentViewController and UINavigationController?的更多信息

    http://developer.apple.com/library/ios/#documentation/uikit/reference/UINavigationController_Class/Reference/Reference.html

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-10-20
      • 2019-02-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多