为什么在viewcontroller中传递的值是nil

时间:2017-01-30 20:20:41

标签: ios swift3

我知道这是一个简单的问题但我几个小时都无法理解这里的问题是什么。

enum TypeOfAlert {
    case success, error, warning, confirm
}

class MainAlertView: UIViewController {

    var mode: TypeOfAlert!

    var transitioner : CAVTransitioner    

    override init(nibName nibNameOrNil: String?, bundle nibBundleOrNil: Bundle?) {
        self.transitioner = CAVTransitioner()
        super.init(nibName: nibNameOrNil, bundle: nibBundleOrNil)
        self.modalPresentationStyle = .custom
        self.transitioningDelegate = self.transitioner

        setupAlertView()
    }

    private func setupAlertView() {
       print(mode) // result is nil
    }

    convenience init() {
        self.init(nibName:nil, bundle:nil)
    }

    required init?(coder: NSCoder) {
        fatalError("NSCoding not supported")
    } 
}

我有这个代码来显示alertdialog

按下按钮

打开MainAlertView
let vc = IFOMainAlertView()
    vc.delegate = self
    vc.mode = TypeOfAlert.confirm
    self.present(vc,animated: true)

但是当我打印或调试var模式时总是为零。为什么?

2 个答案:

答案 0 :(得分:2)

您在设置之前已经打印了var模式

答案 1 :(得分:0)

你正试图在初始化时调试,

当你打电话

let vc = IFOMainAlertView()

在调用其余函数之前调用函数init:

vc.delegate = self
vc.mode = TypeOfAlert.confirm

要么为您的类添加一个新的构造函数,将mode作为参数,或者将mode属性的调试延迟到viewDidLoad方法