使用IB(无论是使用Storyboard还是XIB),都可以通过在Identity Inspector-> Custom Class中编辑类名称,轻松地使UITabBarController使用UITabBar的子类。

如何模仿IB的“自定义类”功能,而完全不使用它?

我尝试了以下操作(在UITabBarController的子类中):

var customTabBar = MyCustomTabBarSubclass()

override var tabBar: UITabBar {
    return customTabBar
}

无济于事–显示选项卡栏,但空白。该问题不在其他地方,因为从覆盖的return中的super.tabBar ing var可以解决此问题。

我想问题是我没有设置customTabBar(框架,位置,将其添加到视图层次结构中),但是我想让UITabBarController loadView(我认为那是一个,不确定)对我而言,设置其他UITabBar的方式相同。

想法?

最佳答案

我想你做不到对于这个问题,我花了一些时间浏览UITabBarUITabBarController的文档。
tabBarUITabBarController属性是只读的。

@available(iOS 3.0, *)
    open var tabBar: UITabBar { get } // Provided for -[UIActionSheet showFromTabBar:]. Attempting to modify the contents of the tab bar directly will throw an exception.

此外,在UITabBarControllerdocumentation中指出,您不应操纵此类属性。

您永远不要尝试操纵UITabBar对象本身
存储在此属性中。如果尝试这样做,则标签栏视图
引发异常。为选项卡栏配置项目
界面,而应分配一个或多个自定义视图
控制器添加到viewControllers属性。标签栏收集
您指定的视图控制器中所需的选项卡栏项目。

此属性提供的选项卡栏视图仅用于情况
您想要使用show(from :)方法显示操作表的位置
UIActionSheet类。

只需添加:但不同于此UITabBarController,对UINavigationController进行子类化可让您使用UINavigationBar的子类来初始化此类子类:
UINavigationController(navigationBarClass: <#T##AnyClass?#>, toolbarClass: <#T##AnyClass?#>)

不幸的是,UITabBarController没有这种初始化方法。

10-08 06:08