Как добавить UIBarButtonItem программно? - PullRequest
2 голосов
/ 26 марта 2011

Как правильно добавить программный 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 Ответ

1 голос
/ 26 марта 2011

[[UIImage alloc] initWithContentsOfFile:@"Barcode-White.png"], вероятно, не будет работать.initWithContentsOfFile принимает полный путь к файлу изображения, а не только имя файла.Это, вероятно, проблема;он возвращает ноль, что приводит к тому, что весь конструктор кнопок возвращает ноль.

(Кроме того, вы пропускаете это изображение, вызывая метод init без выпуска или автоматического выпуска).Вместо этого 1006 *, который ищет файл изображения в ресурсах приложения и имеет дополнительный бонус: загружать изображение только один раз, а затем кэшировать его в памяти независимо от того, сколько раз оно вызывается:

http://developer.apple.com/library/ios/documentation/uikit/reference/UIImage_Class/Reference/Reference.html#//apple_ref/occ/clm/UIImage/imageNamed:

Кроме того, похоже, что он должен работать ...

Кроме того, элементы панели навигации всегда имеют стиль UIBarButtonItemStyleBordered.Попытка установить его на UIBarButtonItemStylePlain будет игнорироваться системой.(Но это не должно быть причиной того, что это не работает.)

...