iPhone: добавить сегментированный элемент управления на панель инструментов вместо кнопок в контроллере навигации? - PullRequest
7 голосов
/ 02 октября 2009

Я новичок в программировании на iphone, так что, если бы вы могли мне помочь, я был бы признателен - я был во всем Интернете и не могу найти ответ на этот вопрос.

мои текущие настройки такие

контроллер навигации в MainWindow.xib> Вид в контроллере навигации в MainWindow.xib вызывает RootViewController.xib> RootViewController.xib содержит один табличный вид.

Затем я могу загрузить панель инструментов, используя следующий код в RootViewController.m

UIBarButtonItem *buttonOne = [[UIBarButtonItem alloc] initWithTitle:@"One" 
     style:UIBarButtonItemStyleBordered target:self action:@selector(buttonOnePushed)];
UIBarButtonItem *buttonTwo = [[UIBarButtonItem alloc] initWithTitle:@"Two" 
     style:UIBarButtonItemStyleBordered target:self action:@selector(buttonTwoPushed)]; 

NSArray *barArray = [NSArray arrayWithObjects: buttonOne, buttonTwo, nil];
[buttonOne release];
[buttonTwo release];

[self setToolbarItems:barArray animated:YES];

[self.navigationController setToolbarHidden:NO animated:YES];

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

Если бы кто-нибудь мог сообщить мне код, который будет добавлять сегментированные элементы управления таким же образом, как я использовал для добавления кнопок, я был бы очень признателен.

спасибо, Дейв.

Ответы [ 2 ]

20 голосов
/ 14 ноября 2009

Решение этого заключается в том, чтобы (1) создать UISegmentedControl со всеми его кнопками и т. Д., А затем (2) создать UIBarButtonItem с помощью инициализатора initWithCustomView:(UIView *)view и предоставить сегментированный элемент управления в качестве переменной для этот. Затем добавьте элемент панели кнопок на панель инструментов, используя массив, как вы делали это в своем примере кода.

Убедитесь, что вы установили цель и действие для своего сегментированного контроллера, и я рекомендую установить его стиль на UISegmentedControlStyleBar. Это будет выглядеть так же, как в нижней части приложения «Карты». Надеюсь, что это то, что вы ищете.

11 голосов
/ 15 ноября 2011

Вот мой код, который добавляет сегментированный элемент управления на панель инструментов контроллера навигации. :

NSArray *segItemsArray = [NSArray arrayWithObjects: @"Settings", @"Templates", @"Notes", nil];
UISegmentedControl *segmentedControl = [[UISegmentedControl alloc] initWithItems:segItemsArray];
segmentedControl.frame = CGRectMake(0, 0, 200, 30);
segmentedControl.segmentedControlStyle = UISegmentedControlStyleBar;
segmentedControl.selectedSegmentIndex = 2;
UIBarButtonItem *segmentedControlButtonItem = [[UIBarButtonItem alloc] initWithCustomView:(UIView *)segmentedControl];
UIBarButtonItem *flexibleSpace = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil];
NSArray *barArray = [NSArray arrayWithObjects: flexibleSpace, segmentedControlButtonItem, flexibleSpace, nil];

[self setToolbarItems:barArray];
...