当前位置: 首页 > 知识库问答 >
问题:

Swift:自定义ViewController初始化器

庄文栋
2023-03-14

如何向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();
    }
}
override init(coder aDecoder: NSCoder)
{
    super.init(coder: aDecoder);
}

如果我加上这个,Xcode会抱怨self.leftvc没有在super.init call处初始化。所以我想这也不是解决办法。所以我想知道如何在Swift中将自定义初始化器正确地添加到viewcontroller子类中(因为在Objective-C中这似乎不是问题)?

共有1个答案

龚国源
2023-03-14

解决了!我们必须调用指定的初始值设定项,在本例中它是带有nibName的init,显然...

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

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

    setupScrollView()
    setupViewControllers()
}
 类似资料:
  • Swift 5.x String初始化、定义 1. 字面量初始化字符串 1.1 单行字面量字符串 let str = "some string" 1.2 字面量初始化多行字符串 let str = """ The white Rabbit put on his spectacles. "Where shell I begin, please your Majesty?" he asked. "

  • 本文向大家介绍Swift使用参数自定义初始化,包括了Swift使用参数自定义初始化的使用技巧和注意事项,需要的朋友参考一下 示例 请注意,您不能省略参数标签: 为了允许省略参数标签,请使用下划线_作为标签: 如果参数标签使用一个或多个属性共享名称,请使用self显式设置属性值:            

  • 本文向大家介绍iOS 获取初始ViewController,包括了iOS 获取初始ViewController的使用技巧和注意事项,需要的朋友参考一下 示例            

  • 问题内容: 我有一个称为的子类,我想用一个文件初始化。我不确定如何使用名为xib的文件初始化此类 问题答案: 我测试了这段代码,它很好用: 初始化视图并按如下方式使用它: 要么 更新Swift > = 3.x和Swift> = 4.x

  • 在Laravel中加载自定义助手类有很多问题。然而,它们都没有专注于通过适当的初始化加载它们。 从Laravel 5.3版开始,我们可以使用psr-4自动加载,即自动加载整个目录。但是,类正在加载,但从未初始化。 我在。这个类有一个构造函数,我想在其中加载一些重要的配置,以使助手可用。 那么,如何在加载助手的同时在Laravel中正确初始化它呢?现在我只是使用

  • 问题内容: 当我这样做时,从编译器得到投诉 但是,如果我只添加 ? 在如下所示的 AppDelegate 末尾,错误消失了。 除非我错了,否则我看不到与此错误相关的关键字。 问题答案: 该错误可以得到改善,但是第一个版本的问题是您有一个成员变量,该成员变量没有默认值。Swift中的所有变量必须始终具有一个值。这意味着您必须在没有的初始化程序中进行设置,也可以在线提供默认值。 当您将其设为可选时,默