Как мне создать UIBarButtonItem с несколькими «разделами»? - PullRequest
2 голосов
/ 14 мая 2009

Я хотел бы создать UIBarButtonItem в своем приложении для iPhone, которое имеет две «секции». По сути, я хотел бы иметь функциональность, эквивалентную кнопкам «Сегодня», «Эта неделя» и «Все», которые находятся в разделе «Самые популярные» приложения YouTube для iPhone.

Не похоже, чтобы эта функциональность была реализована с помощью нескольких UIBarButtonItems, поскольку одновременно можно выбрать только один из трех «разделов». Кто-нибудь знает, как это было сделано?

Ответы [ 4 ]

7 голосов
/ 14 мая 2009

То, что вы видите, это UISegmentedControl. Это довольно легко настроить. YouTube делает (вероятно) что-то вроде этого:

NSArray * items = [[NSArray alloc] initWithObjects: NSLocalizedString(@"Today", @""),
                      NSLocalizedString(@"This Week", @""),
                      NSLocalizedString(@"All", @""), nil];
UISegmentedControl * switcher = [[UISegmentedControl alloc] initWithItems: items];
[items release];

// setup the switcher: correct UI style, tint, etc.
switcher.style = UISegmentedControlStyleBar;
switcher.tint = self.navigationController.navigationBar.tintColor; // unnecessary?

// set the target function -- needs to check selectedIndex property
[switcher addTarget: self 
             action: @selector(switcherTapped:)
   forControlEvents: UIControlEventValueChanged];

// set default selection
switcher.selectedSegmentIndex = 0;

// set the switcher as a custom view to use in place of the normal title
self.navigationItem.titleView = switcher;
[switcher release];
2 голосов
/ 14 мая 2009

На самом деле, я думаю, что он описывает UISegmentedControl, который можно добавить на панель навигации текущего представления следующим образом:

UISegmentedControl *segmentedControl = ... 
self.navigationItem.titleView = segmentedControl; 
[segmentedControl release];

Вы должны установить сегменты UISegmentedControl («Сегодня, На прошлой неделе, Все») следующим образом (это также устанавливает обратный вызов при изменении значения элемента управления):

NSArray *sampleArray = --makeAnArrayHere--;
UISegmentedControl *segmentedControl = [[UISegmentedControl alloc] 
    initWithItems:sampleArray];
[segmentedControl addTarget:self action:
    @selector(segmentAction:) forControlEvents:UIControlEventValueChanged];

Я не копировал это из рабочего проекта, поэтому могут быть небольшие синтаксические ошибки, но это должно направить вас в правильном направлении.

1 голос
/ 14 мая 2009

Глядя на приложение YouTube, я думаю, вы действительно захотите использовать UISegmentedControl.

0 голосов
/ 14 мая 2009

То, что вы ищете, это UITabBar элемент управления с UITabBarItem с.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...