一个答案和一个建议:
答案:我建议您稍微更改您的 MVC 模型,使模型中的 BOOL 属性根据网络活动是否完成而打开或关闭,然后使用您的 QuestionsVC 采用的委托/协议来更新后退按钮设置随着该属性的变化。您需要在 QuestionsVC 的委托方法中添加以下内容:
[self.tabBarController.navigationItem setHidesBackButton:YES animated:YES];
我测试了它并且它有效。
建议:从不建议将 UITabBarController 放在 UINavigationController 中(仅推荐相反)。在您深入了解您的项目之前,我会做出相应的调整。
更新:如果您愿意,我可以理解需要一个 mainVC 作为启动 VC,并带有一个“启动”按钮。您是正确的,您需要一个 NavController 才能推送/弹出 VC 并在 Storyboard 中使用 segue。但这不是显示 VC 序列的唯一方法,您可以展示/关闭 VC。所以在你的情况下:
1-我会删除第一个 NavController
2- 通过将 NavController 左侧的箭头移动到 MainVC 左侧,使 MainVC 成为起始 VC(入口点)
3- 断开主 VC 与 TabBar 控制器的连接(删除该链接),因为如果没有导航控制器,您将无法在 SB 中使用 segues。您将必须实例化并呈现该选项卡栏控制器。
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 嵌入到导航控制器中,这样就可以了。
在这种情况下,您可能无需担心该后退按钮,因为它不再存在!
祝你好运
希望这可以帮助。