如何将多个视图控制器推到导航控制器上
新手在这里编程我的第一个应用程序(做了几个教程应用程序)。我使用称为“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];