新手在这里编程我的第一个应用程序(已经制作了几个教程应用程序)。我使用一个名为'RootViewController'的视图控制器作为导航控制器。我已经使用命令
成功地在另一个名为'ClientListViewController'的视图上推送了另一个视图控制器[self.navigationController pushViewController:clientListViewController animated:YES];
我现在在ClientListViewController中并尝试将另一个视图控制器推送到名为“AddClientViewController”的堆栈上。我想以UIModalPresentationFormSheet的形式将其作为模态视图控制器。我试图使用上面命令的变体来推动新的视图控制器,但我不知道如何替换'自我'。我试过了:
[RootViewController.navigationController pushViewController:AddClientViewController animated:YES];
和...
[[RootViewController navigationController] pushViewController:AddClientViewController animated:YES];
以及这些组合中的每一个使用小的'R'代表单词Root。仍然没有运气。
为清楚起见,我在实现文件的顶部使用了以下代码。
#import "AddClientViewController.h"
我是以正确的方式接近这个,还是应该使用全新的导航控制器将其添加到?
任何指针都很受欢迎。
非常感谢
答案 0 :(得分:3)
每个UIViewController
都有一个名为navigationController
的属性。此属性引用最近的封闭UINavigationController
(如果有)。因此,您只需在self.navigationController
中说出ClientListViewController
。
在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];