Swift:将视图控制器的类型更改为除UIViewController之外的其他东西

时间:2015-08-11 23:02:14

标签: ios swift

相对而言,我是初学者,所以这可能是一种完全普遍的做法 - 或者说完全不可能的做法 - 但我一直在想是否可以修改添加的视图控制器在故事板中,除了(或除了?)成为UIViewConroller的实例之外,它还是(blahblah)ViewController的一个实例,例如ABUnknownPersonViewController

这样,而不是做这样的事情:

class ViewController : UIViewController { 

    override func viewDidLoad() {
        let test = ABUnknownPersonViewController() 
        ...
        self.presentViewController(test, animated: false, completion: nil) 

    }

}

这个可以完成:

class ViewController : ABUnknownPersonViewController { 

    override func viewDidLoad() { 

         //ViewController already is an ABUnknownPersonViewController, so you can treat it as one 
         //example below (displayedPerson is a property of ABUnkownPersonViewControllers)
         self.displayedPerson...

    }

}

编辑: ABUnknownPersonViewController是Apple提供的一个类,支持子类化(here)。说到这一点,并且我明显希望尽可能简单的解决方案(避免协议和诸如此类的东西),我有什么选择?

我尝试class FourthViewController: UIViewController, ABUnknownPersonViewController, ABUnknownPersonViewController, ABUnknownPersonViewControllerDelegate只是为了获得有关多重继承的错误。

1 个答案:

答案 0 :(得分:2)

听起来你真正想做的是创建UIViewController的子类,并在你的故事板中,将自定义类设置为你的子类。从故事板加载视图控制器时,它将是您的子类的实例。

所以你的子类看起来像这样:

class ABUnknownPersonViewController : UIViewController { 

    override func viewDidLoad() { 
         self.displayedPerson...

    }

}

在故事板中,突出显示要为其使用自定义类的视图控制器,然后在“自定义类”字段中键入子类的名称。如果您已正确完成,则应自动为您完成。

enter image description here