我有问题尝试从ios应用操纵导航堆栈。或者至少是因为这种操纵的行为。ios导航堆栈操作
我的情况:
我有3个ViewControllers。
控制器一个示出了多个级别, 控制器b是gameview 控制器C是某种得分
显然我将选择在控制器中的一个电平,这将触发一个SEGUE到控制器B,一旦水平是完成对控制器的不合格赛格。每一次都是推动。
现在一旦我在控制器c我不希望能够回到b使用后退按钮。我想回到控制器a。为了这个工作,我从堆栈中删除了控制器,所以不会移动到控制器b。这工作正常。
im面临的问题是,控制器a上显示的后退按钮,看起来不应该有任何回应。如果我点击后退按钮,应用程序不会崩溃,按钮就会消失,离开标题。
我尝试添加:
NSArray* controllers = [self.navigationController viewControllers];
if ([controllers count]<=1) {
[self.navigationItem setHidesBackButton:YES animated:YES];
} else {
[self.navigationItem setHidesBackButton:NO animated:YES];
}
[super viewDidAppear:animated];
在一些相对计算器文章建议,但没有成功。除此之外,这看起来不像ios创建Storyboard中的那些按钮,而实际上并没有添加它们,但是当它们不再需要时,它们不会删除它们。这给我留下了一些选择。
- 任我认为,IOS是聪明比它实际上是
- 我缺少一些重要的更新导航栏
- 我去这一切都错了
besdies即时通讯使用此代码剪断从控制器b切换到c。
[self performSegueWithIdentifier:@"feedbackSegue" sender:self];
[self removeFromParentViewController];
任何有关缺失操作或一般不良做法的提示都将不胜感激。
更新
经过进一步调查,它不只是后退按钮,它的整个导航栏即关。它的行为就像删除的控制器仍然在那里一样。 BackButton在右端有另一个uiActionButton。
导航栏是否将其状态存储到不同的堆栈上,而不是视图控制器?如果是这种情况,我可以从这个堆栈中移除该状态,以保持一致。
这是我在做什么,导致了同样的问题。问题是我实际上回到了控制器b。它的控制器仍然显示回来,即使无处可返回 –
嗯,我没有任何问题,一定要将它添加在viewDidAppear虽然。 – streem
我在viewdidload中做了完全相同的事情。我不太清楚为什么它有所作为,你是否删除了以前的视图控制器在didload或didappear(你可以点亮一些?),但它显然是有区别的。谢谢。 –