代码之家  ›  专栏  ›  技术社区  ›  Aggressor

在没有情节提要或xib文件的情况下实例化UIViewController

  •  3
  • Aggressor  · 技术社区  · 10 年前

    我一直在寻找一种方法来实例化一个自定义的UIViewController类,该类没有附加到故事板或xib文件。

    当然,当我尝试初始化UIViewController时,它需要一个NSCoder对象。

    然而,我不知道这个NSCoder对象来自何处,也不知道如何正确创建它。

    你知道我如何创建一个NSCoder对象来初始化我的UIViewController吗?或者在我可以获取的应用程序中有一个NSCode对象吗?

    public class Controller:UIViewController, UIAlertViewDelegate
    {
        var _viewAuto:AutoUI! //newName
    
        override init()
        {
            super.init()
        }
    
        required public init(coder aDecoder: NSCoder) {
            super.init(coder: aDecoder)
        }
    }
    

    enter image description here enter image description here

    1 回复  |  直到 10 年前
        1
  •  1
  •   kellanburket    10 年前

    init(coder aDecoder: NSCoder) 只有在从情节提要实例化视图时才会调用。要创建自定义UIViewController并手动实例化,只需添加:

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

    到您的自定义视图控制器。现在,您可以自由创建自己的初始化方法,并传递任何您喜欢的变量。