Подтвердить что ты не робот

IOS: В чем разница между -init и -viewLoad ViewController?

Я не знаю точно, в каком правильном месте установить такие вещи, как tintColor NavigationBar или заголовок моего ViewController. Он работает в методе -init и в методе -viewLoad. Что такое "наилучшая практика" или "правильный путь"? Имеет ли один из этих преимуществ?

4b9b3361

Ответ 1

Методы init (да, есть больше одного), где инициализируется UIViewController. Таким образом, это место, где вы делаете материал для UIViewController, а не его представлений.

Если вы используете nib для загрузки вашего представления, лучшим местом для установки каких-либо свойств является метод viewDidLoad. Этот метод вызывается после загрузки nib. Если вы программным образом настроили представление с помощью метода loadView, то это место, где можно установить свойства UIControl.

Так как система может выгружать представления для сохранения памяти, она оставит только UIViewController. Любые свойства, установленные в методе init, снова не будут применяться, так как UIViewController уже инициализирован.

Ответ 2

метод init используется для инициализации viewController, в то время как метод viewDidLoad используется для загрузки вашего nib (т.е. вашего представления). поэтому, когда вы хотите что-то сделать с помощью viewController, используйте метод init, и когда вы хотите что-то сделать с вашим представлением, используйте viewDidLoad.

Ответ 3

Правильное место - установить его в viewDidLoad. Чтобы узнать больше об этих методах, Apple предоставила documentation