使用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
的方式相同。想法?
最佳答案
我想你做不到对于这个问题,我花了一些时间浏览UITabBar
和UITabBarController
的文档。tabBar
的UITabBarController
属性是只读的。
@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.
此外,在
UITabBarController
的documentation中指出,您不应操纵此类属性。您永远不要尝试操纵UITabBar对象本身
存储在此属性中。如果尝试这样做,则标签栏视图
引发异常。为选项卡栏配置项目
界面,而应分配一个或多个自定义视图
控制器添加到viewControllers属性。标签栏收集
您指定的视图控制器中所需的选项卡栏项目。
此属性提供的选项卡栏视图仅用于情况
您想要使用show(from :)方法显示操作表的位置
UIActionSheet类。
只需添加:但不同于此
UITabBarController
,对UINavigationController
进行子类化可让您使用UINavigationBar
的子类来初始化此类子类:UINavigationController(navigationBarClass: <#T##AnyClass?#>, toolbarClass: <#T##AnyClass?#>)
不幸的是,
UITabBarController
没有这种初始化方法。