UITabBarController故事板启动屏幕-初始标签?

5
我正在使用一个带有5个UINavigationControllers的UITabBarController作为我的应用程序启动画面,这个故事板除了提供启动屏幕外没有任何作用。
我想要做的是更改默认选择的选项卡。我目前卡在这里:launch tab bar
一旦实际的视图控制器加载,我会得到这个:actual tab bar
正如您所想象的那样,它的选择跳跃有点令人不适。由于我无法将自定义类附加到启动屏幕中的任何内容,因此我不知道如何以编程方式更改选项卡。当然,如果有一种方法可以使用不同颜色的图标来伪造它,那也可以,但系统会添加该颜色到所选图标。
是否有一种方法可以在故事板启动屏幕上完成这个操作?谢谢。
3个回答

5
不要在LaunchScreen.storyboard中使用选项卡控制器。相反,使用普通视图控制器并添加选项卡栏,然后根据需要添加选项卡项目。这似乎是没有选定任何索引的唯一方法来创建选项卡栏。

1
虽然这个问题是多年前提出的,但我已经认真思考过它,并找到了一个解决方法,对于我的应用程序TimeFinder,我很满意。
这里的其他答案给出了一些好的建议,但尝试构建TabBarController的复制品似乎具有挑战性和不可持续性,并且我没有使用Akshay Agrawal提到的User Defined Attributes hack获得太多成功 1
由于问题本质上是错误的项目在启动屏幕中被选为所选项,所以我决定通过将所选图像的色调颜色更改为浅灰色来完全隐藏所选项,以匹配其他未选中的选项卡栏目标志的颜色2
这使我能够将项目的顶级视图控制器(嵌入在navbarcontrollers中的视图控制器嵌入在tabbarcontroller中)复制并粘贴到Launch Screen storyboard中,删除所有无关紧要的连接和视图控制器,并最终拥有质量优良的启动屏幕,使应用程序看起来比实际加载速度快。
这是我的启动画面故事板,供参考3。这是我的应用程序,它很快将更新此启动画面4App Store上的TimeFinder

Launch Screen Storyboard Actual final view visible when app has finished loading Launch Screen with modified Tab Bar Image Tint Launch Screen with User-Defined Attribute hack


-3
在你的视图中使用这段代码将会出现以下效果:
yourTabBarController.selectedViewController=[yourTabBarController.viewControllers objectAtIndex:2]

因为我正在使用Storyboard作为启动Storyboard,所以我无法为任何控制器分配自定义子类,因此没有viewWillAppear方法供我覆盖。 - hokiewalrus
好的,你可以尝试以下步骤:
  1. 在Storyboard中选择标签栏控制器
  2. 在Utilities面板中显示Identity Inspector
  3. 添加一个新的“用户定义的运行时属性”
  4. 将Key Path设置为“selectedIndex”
  5. 将Type设置为“Number”
  6. 将Value设置为您希望选择的选项卡的索引(例如,值为1将选择第二个选项卡)
  7. 保存Storyboard,构建并运行应用程序。
- Akshay Agrawal
1
啊,太好了!谢谢!由于某种原因,我不得不取消“用作启动屏幕”的勾选框以消除错误,但它仍然将故事板加载为我的启动屏幕,真是奇怪。 - hokiewalrus
在启动屏幕故事板中什么都不做。 - mnl
无法通过代码或运行时属性更改启动屏幕故事板。 - mnl

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接