【问题标题】:How to push multiple view controllers onto navigation controller如何将多个视图控制器推送到导航控制器上
【发布时间】:2012-02-05 15:34:28
【问题描述】:

新手在这里编写我的第一个应用程序(已经制作了几个教程应用程序)。我正在使用一个名为“RootViewController”的视图控制器作为导航控制器。我已经使用以下命令成功地将另一个视图控制器推到了上面,称为“ClientListViewController”:

[self.navigationController pushViewController:clientListViewController animated:YES];

我现在在 ClientListViewController 中并尝试将另一个视图控制器推送到名为“AddClientViewController”的堆栈上。我想让它成为 UIModalPresentationFormSheet 形式的模态视图控制器。我正在尝试使用上述命令的变体来推送新的视图控制器,但我不知道如何替换“自我”。我试过了:

[RootViewController.navigationController pushViewController:AddClientViewController animated:YES];

还有……

[[RootViewController navigationController] pushViewController:AddClientViewController animated:YES];

以及这些组合中的每一个都使用小“R”作为词根。还是没有运气。

为清楚起见,我在实现文件的顶部使用了以下代码。

#import "AddClientViewController.h"

我是否以正确的方式处理这个问题,还是应该使用全新的导航控制器来添加它?

收到的任何指针。

非常感谢

【问题讨论】:

    标签: ios uinavigationcontroller


    【解决方案1】:

    每个UIViewController 都有一个名为navigationController 的属性。此属性指的是最近的封闭UINavigationController,如果有的话。所以你可以在你的ClientListViewController中说self.navigationController

    在 iOS 中,我们通常将类名大写。所以听起来AddClientViewController 是一个类名。您需要拥有该类的实例才能将其推送到导航控制器的堆栈中。像这样的:

    AddClientViewController *addClientVC = [[AddClientViewController alloc] init];
    [self.navigationController pushViewController:addClientViewController animated:YES];
    

    您可能需要使用不同的初始化方法或设置addClientVC 的一些属性,然后再推送它;这取决于您对AddClientViewController 的实现。

    如果您想以模态方式呈现它,则不要将其推送到导航控制器的堆栈中。相反,您可以这样做:

    AddClientViewController *addClientVC = [[AddClientViewController alloc] init];
    addClientVC.modalPresentationStyle = UIModalPresentationFormSheet;
    [self presentViewController:addClientVC animated:YES completion:nil];
    

    【讨论】:

      猜你喜欢
      • 2015-06-13
      • 2014-01-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-08-08
      相关资源
      最近更新 更多