【问题标题】:Change selectedIndex on a UITabBarController without making it change the current view更改 UITabBarController 上的 selectedIndex 而不会更改当前视图
【发布时间】:2014-01-17 10:42:10
【问题描述】:

我有一个UITabBarController,有 4 个选项卡,前两个是“程序”和“锻炼”。

在第一个选项卡的视图中,用户可以选择他们想要执行的程序,然后点击“执行锻炼”,这会将他们带到锻炼屏幕。

我的目标是将锻炼屏幕显示为与程序选择相同的导航控制器的一部分,但是我想更新 UITabBarController 以反映我们现在在锻炼屏幕上的事实。

问题是,如果我打电话

UITabBarController *tabController = (UITabBarController*)self.navigationController.parentViewController;
[tabController setSelectedIndex:1];

这会在新的UINavigationController 中打开WorkoutViewController,而不是使用旧的。我意识到两个UINavigationController 问题是因为我的storyboard 而发生的,但是如果我没有两个单独的UINavigationControllers,TabView 不会一直保持在顶部(第一次推送后它会消失) .

如何更新我的UITabBarController 上的selectedIndex 而不强制它加载新的UINavigationController

【问题讨论】:

  • 如果你有两个导航控制器会有什么问题
  • 当我调用 [tabController setSelectedIndex:1] 时,“锻炼”屏幕在它自己的导航控制器内打开(即没有返回按钮可以返回程序选择屏幕)。

标签: ios objective-c uinavigationcontroller storyboard uitabbarcontroller


【解决方案1】:

我认为你应该断开你的锻炼控制器并使用 storybord id 而不是从程序控制器推送这个控制器,而是更改标签的选定索引将这个控制器推送到第二个导航控制器

【讨论】:

  • 听起来不错。我了解使用 performSegue 将锻炼添加到第一个 navigationcontroller,但是如何更改选定的选项卡索引而不将其推送到第二个 navigationController(就像现在发生的那样?)
  • 我已经更新了我的答案,但您需要委托来交换数据,在我看来,像这种情况下使用 Storybord 并不适合 xib。 :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-02-20
  • 1970-01-01
  • 1970-01-01
  • 2013-12-01
  • 1970-01-01
  • 2012-04-09
相关资源
最近更新 更多