Я не знаю точно, в каком правильном месте установить такие вещи, как tintColor NavigationBar или заголовок моего ViewController. Он работает в методе -init и в методе -viewLoad. Что такое "наилучшая практика" или "правильный путь"? Имеет ли один из этих преимуществ?
IOS: В чем разница между -init и -viewLoad ViewController?
Ответ 1
Методы init
(да, есть больше одного), где инициализируется UIViewController
. Таким образом, это место, где вы делаете материал для UIViewController
, а не его представлений.
Если вы используете nib
для загрузки вашего представления, лучшим местом для установки каких-либо свойств является метод viewDidLoad
. Этот метод вызывается после загрузки nib
.
Если вы программным образом настроили представление с помощью метода loadView
, то это место, где можно установить свойства UIControl
.
Так как система может выгружать представления для сохранения памяти, она оставит только UIViewController
. Любые свойства, установленные в методе init
, снова не будут применяться, так как UIViewController
уже инициализирован.
Ответ 2
метод init используется для инициализации viewController, в то время как метод viewDidLoad используется для загрузки вашего nib (т.е. вашего представления). поэтому, когда вы хотите что-то сделать с помощью viewController, используйте метод init, и когда вы хотите что-то сделать с вашим представлением, используйте viewDidLoad.
Ответ 3
Правильное место - установить его в viewDidLoad
. Чтобы узнать больше об этих методах, Apple предоставила documentation