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

前端之家收集整理的这篇文章主要介绍了如何在Swift中为UIViewController子类创建自定义初始化器?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
道歉如果这已被问过,我已经搜索了很多,许多答案是从早期的Swift betas,当事情不同。我似乎找不到一个确定的答案。

我想要子类化UIViewController,并有一个自定义初始化程序,以允许我在代码中轻松地设置它。我有困难在Swift中这样做。

我想要一个init()函数,我可以使用传递一个特定的NSURL然后我将使用视图控制器。在我看来,它看起来像init(withImageURL:NSURL)。如果我添加那个函数,然后要求我添加init(coder:NSCoder)函数

我相信这是因为它在超类中标记required关键字?所以我必须在子类中做它?我补充:

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

怎么办?我的特殊初始化程序被认为是方便的吗?指定一个?我调用一个超级初始化程序?来自同一个类的初始化器?

如何将我的特殊初始化程序添加到UIViewController子类?

  1. class ViewController: UIViewController {
  2.  
  3. var imageURL: NSURL?
  4.  
  5. // this is a convenient way to create this view controller without a imageURL
  6. convenience init() {
  7. self.init(imageURL: nil)
  8. }
  9.  
  10. init(imageURL: NSURL?) {
  11. self.imageURL = imageURL
  12. super.init(nibName: nil,bundle: nil)
  13. }
  14.  
  15. // if this view controller is loaded from a storyboard,imageURL will be nil
  16.  
  17. /* Xcode 6
  18. required init(coder aDecoder: NSCoder) {
  19. super.init(coder: aDecoder)
  20. }
  21. */
  22.  
  23. // Xcode 7 & 8
  24. required init?(coder aDecoder: NSCoder) {
  25. super.init(coder: aDecoder)
  26. }
  27. }

猜你在找的Swift相关文章