ios - Swift:自定义 ViewController 初始化器

标签 ios objective-c swift uiviewcontroller initialization

如何在 Swift 中为 UIViewController 子类添加自定义初始化器?

我创建了一个 UIViewController 的子类,看起来像这样:

class MyViewController : UIViewController
{
    init(leftVC:UIViewController, rightVC:UIViewController, gap:Int)
    {
        self.leftVC = leftVC;
        self.rightVC = rightVC;
        self.gap = gap;

        super.init();

        setupScrollView();
        setupViewControllers();
    }
}

当我运行它时,我得到一个 fatal error :

fatal error: use of unimplemented initializer 'init(nibName:bundle:)' for class 'MyApp.MyViewController'

我在其他地方读到过,在添加自定义初始化程序时,还必须覆盖 init(coder aDecoder:NSCoder) 所以让我们覆盖 init 并看看会发生什么:

override init(coder aDecoder: NSCoder)
{
    super.init(coder: aDecoder);
}

如果我添加这个,Xcode 会提示 self.leftVC 在 super.init 调用时没有初始化。所以我想这也不是解决方案。所以我想知道如何将自定义初始化程序正确添加到 Swift 中的 ViewController 子类(因为在 Objective-C 中这似乎不是问题)?

最佳答案

解决了!必须调用指定的初始化程序,在这种情况下是带有 nibName 的初始化程序,显然 ...

init(leftVC:UIViewController, rightVC:UIViewController, gap:Int)
{
    self.leftVC = leftVC
    self.rightVC = rightVC
    self.gap = gap

    super.init(nibName: nil, bundle: nil)

    setupScrollView()
    setupViewControllers()
}

关于ios - Swift:自定义 ViewController 初始化器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25527311/

相关文章:

arrays - swift - 获取并附加 Firebase 值的函数返回空字符串

ios - UITableView - 在滚动时它会丢失与选定单元格关联的属性。如何保存这些属性? - swift

ios - 在 UIScrollView 中调整多行 UILabel 的大小会中断滚动。为什么?

c++ - Xcode 8、Swift 和 C++

ios - watchkit 中的 LongPressGestureRecognizer

objective-c - 如何在Mac OS的拾色器上实现放大镜玻璃?

ios - 创建一个计时器来删除 tableviewcell 用户帖子?

objective-c - RE : autorotating, 带有属性字符串的滚动、带项目符号、缩进的 UIScrollView

ios - 创建 alertview 并点击标签

ios - 等到在 ios 中执行委托(delegate)方法