我正在开发一个视图控制器,可以模态显示或推送到导航堆栈中。我把它设为UINavigationController
子类,以便我免费获得所有UIToolbar
个东西。我可以使用以下方式呈现它:
[self presentModalViewController:myViewController animated:YES];
问题是,UINavigationController
不允许将另一个UINavigationController
推入其中(有意义),因此会崩溃:
[self.navigationController pushViewController:myViewController animated:YES];
是否有办法检测myViewController
的显示方式,并自动让它在UINavigationController
和UIViewController
之间切换,以便我不需要2个不同的类?
换句话说,myViewController将能够检测它是如何呈现的,并推送它将归结为:
[self.navigationController pushViewController:myViewController.topViewController animated:YES];
注意:这样的事情可能会发生,但它离默认的UIViewController行为太远了:
[myViewController pushIntoNavigationController:navController]; // only push myViewController.topViewController
[myViewController presentModallyInParentController:parentController]; // push the whole myViewController
答案 0 :(得分:1)
在myViewController
子类中,创建一个类似这样的方法:
- (void)presentFromViewController:(UIViewController *)presentingViewController
{
if ([[presentingViewController class] isEqual:[UINavigationController class]])
[presentingViewController pushViewController:self.topViewController animated:YES];
else
[presentingViewController presentModalViewController:self animated:YES];
}
这会起作用还是我不能正确理解?