Objective c iOS:关闭模式并在主NavigationController上推送新的viewcontroller
这是我的问题(见下图): 我有一个主屏幕(Objective c iOS:关闭模式并在主NavigationController上推送新的viewcontroller,objective-c,uinavigationcontroller,Objective C,Uinavigationcontroller,这是我的问题(见下图): 我有一个主屏幕(MainViewController),从中我展示了嵌入在导航控制器中的表单模式(ModalController) 完成表单后,我想将结果呈现给用户,并取消模式 结果用ItemViewController显示,应将其推到主堆栈上,即在导航控制器中,如果用户按下返回键,则返回主屏幕 我的问题是如何取消模式并同时推送新的视图控制器 我尝试的是: 取消模式,并使用在完成块中推送新的视图控制器 self.parentViewController.naviga
MainViewController
),从中我展示了嵌入在导航控制器中的表单模式(ModalController
)
完成表单后,我想将结果呈现给用户,并取消模式
结果用ItemViewController
显示,应将其推到主堆栈上,即在导航控制器中,如果用户按下返回键,则返回主屏幕
我的问题是如何取消模式并同时推送新的视图控制器
我尝试的是:
- 取消模式,并使用在完成块中推送新的视图控制器
但只有模式被解除self.parentViewController.navigationController pushViewController:itemViewController
- 以相同的方式按下视图控制器,然后关闭,也不会产生任何效果
- 将模态展开到主屏幕,然后从
方法中,实例化并推送新的视图控制器。不幸的是,下面的代码具有相同的效果unwindSegue
可能很重要 在故事板中,ItemViewController嵌入在NavigationController中,因为它的定义如下图所示: 也许这有助于: 在ItemViewController的viewDidLoad方法中:
UIImage *backButtonImage = [UIImage imageNamed:@"back.png"];
UIButton *backButton = [UIButton buttonWithType:UIButtonTypeCustom];
[backButton setImage:backButtonImage
forState:UIControlStateNormal];
backButton.frame = CGRectMake(0, 0, 55, 45);
[backButton addTarget:self
action:@selector(goHome)
forControlEvents:UIControlEventTouchUpInside];
UIBarButtonItem *backBarButtonItem = [[UIBarButtonItem alloc] initWithCustomView:backButton];
self.navigationItem.leftBarButtonItem = backBarButtonItem;
- (void)goHome{
NSArray *array = [self.navigationController viewControllers];
[self.navigationController popToViewController:[array objectAtIndex:0] animated:YES];
}
嗯,是的,显然问题是模态被忽略了。我试图从模式中呈现新的ViewController,但没有忽略它,它正确地显示出来。所以现在我只需要“黑客”我的方式回到主屏幕。我不知道popToViewController,现在就试试吧!
UIImage *backButtonImage = [UIImage imageNamed:@"back.png"];
UIButton *backButton = [UIButton buttonWithType:UIButtonTypeCustom];
[backButton setImage:backButtonImage
forState:UIControlStateNormal];
backButton.frame = CGRectMake(0, 0, 55, 45);
[backButton addTarget:self
action:@selector(goHome)
forControlEvents:UIControlEventTouchUpInside];
UIBarButtonItem *backBarButtonItem = [[UIBarButtonItem alloc] initWithCustomView:backButton];
self.navigationItem.leftBarButtonItem = backBarButtonItem;
- (void)goHome{
NSArray *array = [self.navigationController viewControllers];
[self.navigationController popToViewController:[array objectAtIndex:0] animated:YES];
}