我有一个视图,有时会显示为uinavigationcontroller的推送视图,有时候就像标签栏项目的初始视图一样。
界面上有一个“保存”按钮,我想让视图在被推到屏幕上时弹回到上一个视图,当它作为标签栏选择屏幕的一部分显示时什么都不做。
在伪代码中,我想我想要做的是:
if view-has-been-pushed, then pop back, else do nothing
如何判断视图是否被推送?
答案 0 :(得分:5)
NSArray* views = [myNavigationController viewControllers];
if (self == [views objectAtIndex:0])
{
// I am the root view
}
但正如jasarien所说,如果视图已经是根<{1}},那么popViewControllerAnimated
什么都不做
答案 1 :(得分:1)
您可以从导航控制器获取视图控制器属性,并与阵列中的第一个控制器进行比较。如果比较返回true,则它是根视图控制器,否则它被推送。
但是,如果视图控制器是根视图控制器,则调用pop应该不执行任何操作,因此您不需要任何额外的逻辑。
答案 2 :(得分:1)
你的“如果已经推出了视图,然后回弹,则无所事事”逻辑可以通过以下方式轻松实现:
if (self.navigationController != nil) {
// We are part of a navigation controller, so pop
}
如果您不在导航控制器中,您可能想要删除完成按钮?您可以在viewDidLoad
中执行相同的检查,并在那里显示或隐藏完成按钮。