#iphone #objective-c #ios #uikit
#iPhone #objective-c #iOS #uikit
Вопрос:
Где я должен разместить свой код, который создает UIBarButtonItem
и присваивает его self.navigationItem.rightBarButtonItem
? В initWithNibName
или viewDidLoad
?
РЕДАКТИРОВАТЬ: я должен уточнить, что я загружаю перо из Interface Builder.
Ответ №1:
viewDidLoad
это правильное место для создания кнопки программно, независимо от того, загружаете ли вы перо из Interface Builder или нет.
Из документации по UIViewController
классу, viewDidLoad
методу
Этот метод вызывается после того, как контроллер представления загрузил связанные с ним представления в память. Этот метод вызывается независимо от того, были ли просмотры сохранены в файле nib или созданы программно в методе loadView. Этот метод чаще всего используется для выполнения дополнительных шагов инициализации представлений, загружаемых из файлов nib.
Комментарии:
1. Можете ли вы указать мне, почему не следует загружать кнопку в loadView?
2. вы можете, просто OP ссылается на
initWithNibName:bundle
метод, поэтому они должны использовать Interface Builder для загрузки своего основного представления. ‘loadView’ используется только при программном создании всей структуры представления.
Ответ №2:
- (void) loadView
Если вы делаете это прагматично. В противном случае поступайте так, как предлагает Rog.
Комментарии:
1. Сейчас она находится в viewDidLoad, но я не вижу никакой анимации. Может быть, это слишком быстро, чтобы видеть?
2. если вы хотите увидеть анимацию, загрузите ее
viewDidAppear
вместо этого, но убедитесь, что вы выгрузили ееviewWillDisappear
илиviewDidDisappear
хотите, чтобы она анимировалась при каждом отображении представления.3. @Wolfert
loadView
вызывается только в том случае, если вся структура представления создается программно (т. Е. Не Используется конструктор интерфейса).4. Извините, я перепутал его с UINavigationItem, который можно добавить анимированным :.
5. @Wolfert: В документации говорится, что я не должен переопределять loadView «если вы используете Interface Builder для создания своих представлений и инициализации контроллера представления».