如何将多个视图控制器推到导航控制器上

如何将多个视图控制器推到导航控制器上

问题描述:

新手在这里编程我的第一个应用程序(做了几个教程应用程序)。我使用称为“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" 

我以正确的方式接近这个,还是应该使用全新的导航控制器将其添加到?

任何指针大大接收。

非常感谢

UIViewController有一个名为navigationController属性。如果有属性,则此属性指的是最近的包围UINavigationController。所以你可以在你的ClientListViewController中说self.navigationController

在iOS系统中,我们通常利用类名。所以听起来像AddClientViewController是一个类名。您需要让该类的实例将其推送到导航控制器的堆栈上。事情是这样的:

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

您可能需要使用不同的init方法或推前设置addClientVC一些性能;这取决于您的实施AddClientViewController

如果你想有模式目前它,你不推导航控制器的堆栈。相反,你做这种方式:

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