ios - 如何在 Swift 中编写 UIViewController 的初始化方法

标签 ios swift uiviewcontroller uikit designated-initializer

我无法将 init 方法添加到以下 UIViewController 类。我需要在 init 方法中编写一些代码。我必须写 init(coder) 方法吗?即使我添加了编码器和解码器方法,我仍然会出错。我也尝试过使用不带任何参数的 init 方法,但这似乎也不起作用。

class ViewController: UIViewController {

    var tap: UITapGestureRecognizer?

    override init(nibName nibNameOrNil: String?, bundle nibBundleOrNil: NSBundle?)   {
        super.init(nibName: nil, bundle: nil)
        tap = UITapGestureRecognizer(target: self, action: Selector("handleTap:"))
    }

...
...
}

如果我调用不带参数的 super.init() 方法,错误是“必须调用父类(super class)的指定初始化器”,如果我传递参数 nib 和 bundle,则错误是“Required initializer init(coder)”。

即使我添加了 init(coder) 和 init(decoder) 它也不起作用。

最佳答案

我用过:

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

有人建议:

convenience init(){
    self.init()
}

但这会给你一个无限循环。

关于ios - 如何在 Swift 中编写 UIViewController 的初始化方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30679129/

相关文章:

uiviewcontroller - Swift中如何调用UIViewController的transitionFromViewController?

ios - 如何更改 viewController 的颜色(或主题)?

ios - Firebase 存储图像缓存不更新 SWIFT

ios - SKShapeNode 拖动不流畅

swift - Swift 中下标和函数的区别

ios - 在单个 UIViewController 中交换 UITableViews

ios - 编程界面方向更改不适用于 iOS

ios - 使用 UITapGestureRecognizer 显示 UIPickerView

ios - 设置 MeasurementFormatter 实例的语言环境会使实例上设置的任何 numberFormatter 属性选项无效

ios - 滚动到包含某个 UITextField 的 UITableViewCell