我有一个带有两个标签的标签栏。为了避免在视图控制器中有选项,我尝试使用@IBSegueAction
.
我初始化标签栏控制器:
let tabBarController = storyboard.instantiateInitialViewController { coder in
TabBarController(coder: coder, mainVar: (first: "Hello", second: "World"))
}
我从标签栏控制器类初始化两个视图控制器:
class TabBarController: UITabBarController {
let mainVar: (first: String, second: String)
required init?(coder: NSCoder) {
fatalError()
}
init?(coder: NSCoder, mainVar: (String, String)) {
self.mainVar = mainVar
super.init(coder: coder)
}
@IBSegueAction func instantiateFirstViewController(coder: NSCoder) -> UIViewController? {
FirstViewController(coder: coder, firstVar: mainVar.first)
}
@IBSegueAction func instantiateSecondViewController(coder: NSCoder) -> UIViewController? {
SecondViewController(coder: coder, secondVar: mainVar.second)
}
}
这是视图控制器之一:
class FirstViewController: UIViewController {
let firstVar: String
required init?(coder: NSCoder) {
fatalError()
}
init?(coder: NSCoder, firstVar: String) {
self.firstVar = firstVar
super.init(coder: coder)
}
}
而不是使用我的初始化程序 Xcode 是使用默认的。错误信息是:
[Storyboard] Unable to find method -[(null) instantiateFirstViewControllerWithCoder:]
编辑:我在 GitHub 上上传了完整的演示项目:演示项目