我有以下代码:
import UIKit
class tabBarVC: UIViewController, UITabBarControllerDelegate {
var tabBarController : UITabBarController // ERROR1: Cannot override with a stored property 'tabBarController'
override init() {
super.init()
self.tabBarController = UITabBarController()
}
override func viewDidLoad() { //ERROR2: 'required' initializer 'init(coder:)' must be provided by subclass for 'UIViewController'
super.viewDidLoad()
}
}
我需要定义和初始化一个名为tabBarController
的变量,可以作为self.tabBarController
访问。
我在Xcode中遇到两个错误:
tabBarController
init(coder:)
必须由UIViewController
的子类提供我究竟做错了什么?
**编辑**
import UIKit
class tabBarVC: UIViewController, UITabBarControllerDelegate {
var tabBarController : UITabBarController() // Error: "Consecutive declarations on a line must be separated by ';'"
override init() {
super.init()
self.tabBarController?.delegate = self
}
required init(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
override func viewDidLoad() {
super.viewDidLoad()
}
}
由于您没有指定任何特定于tabBarController
的内容,您可以这样做:
var tabBarController = UITabBarController()
并且在init方法中没有提到它。
对于错误2,您只需要按照它所说的并添加init(coder:)
,因为您在没有指定初始值设定项的情况下继承该类。
只需将tabBarController重命名为eg。 myTabBarController。
关于所需的init:只需单击左边的红点,直到它建议插入其他代码并让它执行此操作。
更好的方法是使用awakeFromNib
而不是init。