как создать информационную кнопку на панели навигации на iPhone
-
12-09-2019 - |
Вопрос
Я видел много приложений, у которых есть информационная кнопка (буква "i" с кружочком вокруг нее) на панели uinavigationbar.Как мне добавить кнопки такого типа?
Решение
Предыдущий ответ был близок, не совсем скомпилирован.Вот чего вы действительно хотите:
// Info button
UIButton* infoButton = [UIButton buttonWithType:UIButtonTypeInfoLight];
[infoButton addTarget:self action:@selector(showInfoView:) forControlEvents:UIControlEventTouchUpInside];
self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithCustomView:infoButton];
Другие советы
В приведенном выше ответе наблюдается утечка памяти.Вам следует использовать "авторелиз", чтобы избежать этого.Я пытался отредактировать ответ, но пока мне это не удалось.
// Info button
UIButton* infoButton = [UIButton buttonWithType:UIButtonTypeInfoLight];
[infoButton addTarget:self action:@selector(showInfoView:) forControlEvents:UIControlEventTouchUpInside];
self.navigationItem.leftBarButtonItem = [[[UIBarButtonItem alloc] initWithCustomView:infoButton] autorelease];
ЭТО ПРАВИЛЬНЫЙ СПОСОБ СДЕЛАТЬ ЭТО.
Вы должны иметь возможность добавить кнопку типа "Info Light" в navigationItem контроллера представления, который в данный момент отображает UINavigationController.Что-то подобное могло бы быть в коде вашего view controller:
- (void) viewDidLoad {
UIButton * info = [UIButton buttonWithType:UIButtonTypeInfoLight];
// set your button's target and selector for whatever action here.
self.navigationItem.rightBarButtonItem.customView = info;
}
Вы также можете использовать цель и селектор элемента вашей текущей кнопки панели для вашей информационной кнопки.
UIButton *infoButton = [UIButton buttonWithType:UIButtonTypeInfoLight];
[infoButton addTarget:self.barButtonItem.target action:self.barButtonItem.action forControlEvents:UIControlEventTouchUpInside];
self.barButtonItem.customView = infoButton;
Таким образом, любые действия или переходы, связанные с элементом кнопки вашей панели, будут перенесены на вашу информационную кнопку.