自定义初始化程序中的变量未更改
我正在尝试在初始化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...)
),该值将显示为false
并且它保持不变检查时如果我更改了init(nibName...)
的值,那么它已正确设置。 为什么我不能在自定义init方法中更改变量的值?