在ios中保持视图控制器的第一个状态
Posted
技术标签:
【中文标题】在ios中保持视图控制器的第一个状态【英文标题】:Maintain the first state of the view controller in ios 【发布时间】:2015-05-26 10:28:45 【问题描述】:我有三个 UIViewController。当我从控制器 A 到 B 然后 B 到 C 然后再到 B 时。控制器 B 的导航栏的后退按钮将我带到 C。有没有办法确保 B 的导航栏无论我从 B 到 C 再从 C 到 B 多少次,后退按钮都会带我到 A。这可能吗?
【问题讨论】:
当用户从 C 转到 B 时,你是在推送新的 B 视图控制器,而不是弹回之前的控制器吗? 请添加一些用于导航目的的代码 sn-p。 如果 A 是你的根视图控制器,你可以通过捕获后退按钮来使用 popToRootViewControllerAnimated。 @johnpatrickmorgan 我正在推动一个新的 B 视图控制器.. 【参考方案1】:在这种情况下,您必须使用带有自定义方法的自定义后退按钮 -
UIBarButtonItem *barBtnItem = [[UIBarButtonItem alloc]initWithTitle:@"Back" style:UIBarButtonItemStyleBordered target:self action:@selector(backToViewController)];
self.navigationItem.backBarButtonItem = barBtnItem;
- (void)backToViewController
int index =-1;
for (UIViewController *controller in self.navigationController.viewControllers)
index = index +1;
if ([controller isKindOfClass:[self class]])
if (index>0)
[self.navigationController popToViewController:[self.navigationController.viewControllers objectAtIndex:index-1]
animated:YES];
break;
【讨论】:
【参考方案2】:将控制器 A 设置为导航的根控制器和后退按钮的单击事件调用 popToRootViewController
方法而不是 popViewController
。
注意: 这里我假设您使用了自定义栏按钮项。
【讨论】:
以上是关于在ios中保持视图控制器的第一个状态的主要内容,如果未能解决你的问题,请参考以下文章
Swift iOS - 即使我隐藏它,导航栏也不会保持隐藏状态
IOS Interface Builder - 在单个视图控制器场景中管理多个视图