Как добавить UIBarButtonItem программно?
Каков правильный способ добавления UIBarButtonItem программно? В моем случае я пытаюсь добавить его к rightBarButtonItem
, и я перескакивал по иерархии контроллера, но я не могу заставить кнопку отображаться где угодно.
Вот мой текущий код:
- (void)viewDidLoad {
[super viewDidLoad];
[self.navigationItem setRightBarButtonItem:[[[UIBarButtonItem alloc] initWithImage:[[UIImage alloc] initWithContentsOfFile:@"Barcode-White.png"] style:UIBarButtonItemStylePlain target:self action:@selector(scanEquipment:)] autorelease]];
}
Я надеюсь, что кто-то сможет вести меня в правильном направлении. Контроллер, с которого я пытаюсь вызвать это, состоит из 3 уровней. Итак, UITabBarController
→ UIViewController (Settings, 1st level)
→ UIViewController (Vehicle, 2nd level)
→ UIViewController (Inventory, 3rd level)
.
В любом случае, спасибо за любую помощь!
Ответы
Ответ 1
[[UIImage alloc] initWithContentsOfFile:@"Barcode-White.png"]
, вероятно, не будет работать. initWithContentsOfFile принимает полный путь к файлу изображения, а не только имя файла. Это, вероятно, проблема; он возвращает nil, что приводит к тому, что весь конструктор кнопок возвращает nil.
(Кроме того, вы пропустите это изображение, вызвав метод init без выпуска или автозагрузки.)
Попробуйте [UIImage imageNamed:@"Barcode-White"]
вместо этого, который ищет файл изображения в ресурсах приложения и имеет дополнительный бонус только для загрузки изображения один раз, а затем кэширования его в памяти независимо от того, сколько раз он вызывал:
http://developer.apple.com/library/ios/documentation/uikit/reference/UIImage_Class/Reference/Reference.html#//apple_ref/occ/clm/UIImage/imageNamed:
Кроме того, похоже, что он должен работать...
Кроме того, элементы навигационной панели всегда имеют стиль UIBarButtonItemStyleBordered
. Попытка установить его на UIBarButtonItemStylePlain
будет игнорироваться системой. (Но не должно быть причиной, по которой он не работает.)