自定义init UIViewController查询

时间:2017-08-17 23:43:14

标签: ios swift uiviewcontroller

我希望你能帮助我理解为什么下面的代码段工作而另一个没有。我想为我的UIViewController创建一个自定义初始化器,它有一个我创建的自定义nib文件。

我的问题是,我想了解为什么在下面的代码中,当我点击viewDidLoad方法时保留对newMember和facebookLogin的引用,但是在其他代码段中它们不是?任何人都可以解释为什么会出现这种情况?

工作代码阻止

class RegistrationFormViewController: MiOSBaseViewController
{
    var newMember:Member!
    var facebookLogin: Bool = false

    init(member: Member, facebookLogin: Bool = false) {
        self.newMember = member
        self.facebookLogin = facebookLogin
        super.init(nibName: "RegistrationFormViewController", bundle: nil)
    }

    required init?(coder aDecoder: NSCoder) {
        super.init(nibName: "RegistrationFormViewController", bundle: nil)
    }

    override func viewDidLoad() {
        super.viewDidLoad()
        let view = self.view as! RegistrationFormView
        view.loadViewWith(member: newMember)
        view.customNavBarView.backActionBlock = {
            self.newMember.deleteEntity(MiOSDataContext.sharedInstance.managedObjectContext)
            _ = self.navigationController?.popViewController(animated: true)

            return
        }
    }
}

代码阻止

class RegistrationFormViewController: MiOSBaseViewController
{
    var newMember:Member!
    var facebookLogin: Bool = false

    init(member: Member, facebookLogin: Bool = false) {
        self.newMember = member
        self.facebookLogin = facebookLogin
        super.init(nibName: "RegistrationFormViewController", bundle: nil)
    }

    required init?(coder aDecoder: NSCoder) {
       super.init(coder: aDecoder)
    }

    override func viewDidLoad() {
        super.viewDidLoad()
        let view = self.view as! RegistrationFormView
        view.loadViewWith(member: newMember)
        view.customNavBarView.backActionBlock = {
            self.newMember.deleteEntity(MiOSDataContext.sharedInstance.managedObjectContext)
            _ = self.navigationController?.popViewController(animated: true)

            return
        }
    }
}

谢谢, 迈克尔

0 个答案:

没有答案