2015-08-20 5 views
0

Каков наилучший способ (например) включить строку в несколько контроллеров просмотра сразу (например, включить строку кода только под ViewDidLoad в каждом отдельном VC)?Как применить изменения к нескольким контроллерам одновременно?

Я просто ищет более эффективный метод, чем просто копировать-наклеивать в 10 различных VCs

ответ

4

Наследование поможет вам:

class BaseViewController: UIViewController { 
    override func viewDidLoad() { 
     super.viewDidLoad() 

     // your settings for all view controllers here: 
     self.view.backgroundColor = UIColor.lightGrayColor() 
    } 
} 

class HomeViewController: BaseViewController { 
    override func viewDidLoad() { 
     super.viewDidLoad() // call code from BaseViewController.viewDidLoad() 
    } 
} 

class ChatViewController: BaseViewController { 
    override func viewDidLoad() { 
     super.viewDidLoad() // call code from BaseViewController.viewDidLoad() 
    } 
} 

class ProfileViewController: BaseViewController { 
    override func viewDidLoad() { 
     super.viewDidLoad() // call code from BaseViewController.viewDidLoad() 
    } 
} 

Другой вариант Swift расширения:

extension UIViewController { 
    func configureView() { 
     self.view.backgroundColor = UIColor.lightGrayColor() 
    } 
} 

class HomeViewController: UIViewController { 
    override func viewDidLoad() { 
     super.viewDidLoad() 
     configureView() 
    } 
} 

class ChatViewController: UIViewController { 
    override func viewDidLoad() { 
     super.viewDidLoad() 
     configureView() 
    } 
} 

class ProfileViewController: UIViewController { 
    override func viewDidLoad() { 
     super.viewDidLoad() 
     configureView() 
    } 
} 

Дополнительная информация о Inheritance и Extensions в книге Свифт

+1

Просто хочу отметить очень быстро, что этот же метод можно также использовать с Objective-C. Это, вероятно, один из самых полезных и лучших секретов создания приложения очень быстро, используя программные представления. Об этом, как правило, никогда не говорили, не знаю почему, но я рад, что вы опубликовали этот ответ. Очень важные и полезные вещи, и это не ограничивается только UIViewControllers. – Loxx