Проблемы с программным добавлением UIBarButtonItem или редактированием вставленного через IB - PullRequest
1 голос
/ 15 марта 2011

Я работаю над проектом, который использует панель вкладок внизу, чтобы пролистать 5 разделов моего приложения.Один из этих разделов загружает представление карты, которое затем порождает веб-представление.Сначала это было сделано с помощью кнопок Round Rect, но они мешали обзорам, поэтому я решил переключиться на панель навигации.В Интерфейсном Разработчике я вставил элемент навигации, а внутри него два элемента кнопок панели (слева и справа).Я получил функциональность для обеих кнопок, чтобы работать, управляя перетаскиванием из владельца файла, чтобы запустить метод, связанный с каждой кнопкой.Это работает нормально и запускает мой веб-просмотр, но то, что я хотел бы уметь делать, и еще не выяснил, как это сделать, - это изменить одну из кнопок на кнопку «сделано» или «назад» один раз в ИнтернетеПосмотреть.Я попытался создать обе кнопки программно, но ни одна не появилась.Это код, который я пытался использовать для достижения этой цели ...

UIBarButtonItem *updatePosition = [[UIBarButtonItem alloc] initWithTitle:@"Update Position" 
style:UIBarButtonItemStylePlain target:self action:@selector(findMe)];

self.navigationItem.leftBarButtonItem = updatePosition;

[updatePosition release];

Когда я запускаю приложение, кнопка не отображается на элементе навигации, который я вставил с помощью XCode.Единственный способ заставить кнопки отображаться, это вставить их с помощью Interface Builder, как я упоминал ранее.Но тогда я не могу изменить левую кнопку на кнопку «назад» или «готово», как только я поднял новый вид.Я попытался запустить этот код, чтобы изменить стиль кнопки на UIBarButtonItem, который я вставил, используя IB с этим кодом

self.navigationItem.leftBarButtonItem.style = UIBarButtonItemStyleDone;

Но безрезультатно.

1 Ответ

0 голосов
/ 15 марта 2011

Вот несколько полезных методов, которые помогут вам в этом:

+ (UIBarButtonItem *)setRightBarButtonItem:(SEL)action target:(id)sender withImage:(NSString *)imageName {
    UIImage *buttonImage = [UIImage imageNamed:imageName];
    UIBarButtonItem *buttonItem = [[[UIBarButtonItem alloc] initWithImage:buttonImage
                                                                    style:UIBarButtonItemStyleBordered
                                                                   target:sender
                                                                   action:action] autorelease];

    return buttonItem;
}

+ (UIBarButtonItem *)setRightBarButtonItem:(SEL)action target:(id)sender withBarButtonSystemItem:(UIBarButtonSystemItem)systemItem {
    UIBarButtonItem *buttonItem = [[[UIBarButtonItem alloc] initWithBarButtonSystemItem:systemItem
                                                                                 target:sender
                                                                                 action:action] autorelease];

    return buttonItem;
}

Использование:

// Done button.
self.navigationItem.rightBarButtonItem = [Utility setRightBarButtonItem:@selector(doneTapped:) target:self withBarButtonSystemItem:UIBarButtonSystemItemDone];
...