ios - 初始化 Controller 的自类

标签 ios swift cocoa

我在从 obj-c 转换代码时遇到了问题。

controller = [[[self class] alloc] initWithNibName:name bundle:nil];

我试过这样的事情

self.init(nibName: name, bundle: nil)

但它给了我一个错误:使用元类型值构造类类型为“BaseViewController”的对象必须使用“必需”初始化程序。 我该如何解决这个问题?

最佳答案

正如 Ronak 指出的那样,您需要添加 init(coder aDecoder: NSCoder!) 方法。除此之外,您还需要添加 init(nibName nibNameOrNil: String?, bundle nibBundleOrNil: NSBundle?) 方法。所以你的整体代码看起来像这样:

  class func customInitializer() -> ViewController {
    return self.init(nibName: nil, bundle: nil)
  }

  required override init(nibName nibNameOrNil: String?, bundle nibBundleOrNil: NSBundle?) {
    super.init(nibName: nibNameOrNil, bundle: nibBundleOrNil)
  }

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

关于ios - 初始化 Controller 的自类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37409906/

相关文章:

ios - XIB - UIView 或 UIControllerView

ios - 选项卡 View Controller 中嵌入了 protected View ?

objective-c - 处理回调

swift - 如何使 ScrollView 内的 TableView 的滚动行为自然

macos - 如果 OSX Cocoa 应用程序使用 WebKit,它是否包含在可执行文件中或像 dll 一样从系统中访问?

iphone - 使用比较 : selector 比较数组中的 float

ios - Google Plus SDK 回调分享

objective-c - 用户使用 UISegmentedControl 更改显示单位后立即更改显示单位

ios - UITableview 标题隐藏顶部单元格

ios - 标签栏项目不显示