Іншим приємним рішенням є оголошення нового ініціалізатора як convenienceініціалізатора наступним чином:
convenience init( objectId : NSManagedObjectID ) {
self.init()
}
Якщо ви взагалі не заявляєте призначених ініціалізаторів у своєму підкласі, вони успадковуються автоматично, і ви можете використовувати їх self.init()у своєму зручному ініціалізаторі.
У разі UIViewController метод ініціалізації за замовчуванням буде викликати init(nibName nibNameOrNil: String!, bundle nibBundleOrNil: NSBundle!)з nilобох аргументів (Command-Click на UIViewController дасть вам цю інформацію).
TL; TR : Якщо ви віддаєте перевагу програмній роботі з UIViewControllers, ось повний робочий приклад, який додає новий ініціалізатор із користувацьким аргументом:
class MyCustomViewController: UIViewController {
var myString: String = ""
convenience init( myString: String ) {
self.init()
self.myString = myString
}
}