的答案和建议:
答案:我会建议你改变你的MVC模式稍微有模型中的布尔属性,是或者根据网络活动是否已完成,然后用关闭您的QuestionsVC采用的委托/协议,在该属性更改时更新后退按钮设置。您需要在QuestionVC中的代理方法中添加以下内容:
[self.tabBarController.navigationItem setHidesBackButton:YES animated:YES];
我测试了它,它工作正常。
建议:从来不建议在UINavigationController中使用UITabBarController(建议只使用反义词)。在你深入到你的项目之前,我会做相应的调整。
更新: 我可以理解,需要一个mainVC作为启动VC的按钮,以“开始”,如果你愿意。你是正确的,你需要一个NavController能够推动/弹出VC并在Storyboard中使用segues。但是,这不是显示一系列风险投资的唯一方式,您可以提交/解散风险投资。所以你的情况:
1 - 我会删除通过在NavController左侧移动的箭头MainVC
左侧的第一NavController
2-充分利用MainVC开始VC(切入点)
3-将主VC与TabBar控制器断开(删除该链接),因为如果没有导航控制器,您将无法在SB中使用轮巡。您将不得不实例化并呈现该标签栏控制器。
4-添加一个新的目标文件(.m/.h) - UITabBarController的子类,并将IB中的tabBarController的类更改为您的子类的名称。如果它不显示在IB的班级列表的下拉列表中,则可能必须构建/清除或重新启动xcode。
5-在mainVC中创建一个IBAction方法,并将其链接到Main VC中的按钮。
6-这种方法(在主VC),添加以下代码:
yourTabBarControllerSubClassName* myTabController= [self.storyboard instantiateViewControllerWithIdentifier:@"theTab"];
[self presentViewController:myTabController animated:YES completion:nil];
7-确保在您的SB您选择的标签栏控制器和身份检查,把SB ID为“theTab”并检查“使用SB ID”。
8-如果问题VC或状态表VC在每个VC中都有一系列VC,则可以将每个VC嵌入到导航控制器中,这样就可以了。
在这种情况下,您可能不需要担心后退按钮,因为它不再存在!
祝你好运
希望这会有所帮助。
需要清楚的是,您是否希望禁用问题视图控制器的后退按钮,而不管您在导航控制器堆栈中的位置。或者你是否想要拦截正在按下的后退按钮并进行干预? – Spectravideo328 2013-03-03 19:35:08
拦截。在某些情况下需要停止按钮。 – Jordan 2013-03-03 21:14:40
QuestionVC看起来不像是Nav Controller堆栈的一部分。你是否错过了从主VC到标签栏控制器的连接?你在问题中称什么“堆栈顶部”? – Spectravideo328 2013-03-03 21:47:55