我正在尝试在初始化UINavigationController子类的实例时在swift中设置变量值。代码如下所示:
private var initWithRootViewController = false
init() {
super.init(rootViewController: contentVC)
initWithRootViewController = true
}
init(parameters: OAuth2Parameters) {
initWithRootViewController = true
super.init(rootViewController: contentVC)
initWithRootViewController = true
//defer { initWithRootViewController = true }
}
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
}
override init(nibName nibNameOrNil: String?, bundle nibBundleOrNil: NSBundle?) {
super.init(nibName: nibNameOrNil, bundle: nibBundleOrNil)
//initWithRootViewController = true
}
override func viewDidLoad() {
super.viewDidLoad()
if !initWithRootViewController {
setViewControllers([contentVC], animated: false)
}
}
问题是,在我的自定义初始化程序(init(parameters: OAuth2Parameters)
)中,initWithRootViewController
的值永远不会更改。我甚至试图在代码中显示的super.init调用之前和之后设置它,并在初始化之后设置它(注释defer
行)。两者都不起作用。我还尝试在Xcode中清理(并清理构建文件夹)并重置模拟器。
我通过设置断点来检查initWithRootViewController
的值。我发现在自定义初始化程序中,属性会将值更改为true
,但只要它超出初始化程序的范围(调用init(nibName...)
时),值就会显示{{1如果我在false
中更改了值,那么它就会保持这种状态。为什么我不能在自定义init方法中更改变量的值?