自定义初始化程序中的变量未更改

时间:2016-06-10 19:07:21

标签: ios swift uinavigationcontroller initialization

我正在尝试在初始化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方法中更改变量的值?

0 个答案:

没有答案