用 Swift 初始化 UIViewController 的子类?

Posted

技术标签:

【中文标题】用 Swift 初始化 UIViewController 的子类?【英文标题】:Initialize a subclass of UIViewController with Swift? 【发布时间】:2014-06-03 08:50:49 【问题描述】:

我试图通过 UIViewController 的子类了解 Swift 中的初始化是如何工作的。我以为基本格式是这样的,但它会抛出错误......

init(nibName nibNameOrNil: String!, bundle nibBundleOrNil: NSBundle!)   
    //other code
    super.init(nibName: String?, bundle: NSBundle?)

【问题讨论】:

【参考方案1】:

您传递的是类型,而不是变量。您必须改为传递变量。

init(nibName nibNameOrNil: String!, bundle nibBundleOrNil: NSBundle!)  
    // Initialize variables.

    super.init(nibName: nibNameOrNil, bundle: nibBundleOrNil)

【讨论】:

你应该总是在调用 super 之前初始化你的变量。【参考方案2】:

现在应该在调用 super.init 之前初始化变量

init(nibName nibNameOrNil: String!, bundle nibBundleOrNil: NSBundle!)  

    // Initialize variables.

    super.init() // as required

【讨论】:

【参考方案3】:

您可以使用/不使用参数进行初始化。

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


// Default Initializer
override init(nibName nibNameOrNil: String?, bundle nibBundleOrNil: Bundle?) 
    super.init(nibName: nibNameOrNil, bundle: nibBundleOrNil)


// Initialize with value
init(_ sender: Any?) 
    super.init(nibName: nil, bundle: nil)

【讨论】:

以上是关于用 Swift 初始化 UIViewController 的子类?的主要内容,如果未能解决你的问题,请参考以下文章

如何从情节提要中获取 UIViewControl 对象的笔尖名称

如何使用文本字段将数字输入数组(swift3)

无法将类型的值转换为UINavigationController swift3

iOS-Swift-String(字符串常规用法)

UIViewControl之间的七种传值方式

用 Swift 初始化 UIViewController 的子类?