UISegmentedControl в панели навигации с помощью кнопки "Назад"
Я добавляю UISegmentedControl
к панели навигации программно, где должен находиться titleView
. Но поскольку Apple docs упомянули в titleView
, это свойство игнорируется, если leftBarButtonItem не равен нулю.
Но я тоже хочу иметь кнопку "Назад". Как они проиллюстрировали их собственные образы!
![enter image description here]()
Ниже приведен код, который я добавляю UISegmentedControl
.
self.navigationItem.leftBarButtonItem = nil;
UISegmentedControl *statFilter = [[UISegmentedControl alloc] initWithItems:[NSArray arrayWithObjects:@"Filter_Personnal", @"Filter_Department", @"Filter_Company", nil];
[statFilter setSegmentedControlStyle:UISegmentedControlStyleBar];
self.navigationItem.titleView = statFilter;
Есть ли другой способ добавить UISegmentedControl
вместе с кнопкой "Назад"?
Спасибо.
Ответы
Ответ 1
Попробуйте это
Удалите эту строку --- > self.navigationItem.leftBarButtonItem = nil;
Добавьте это вместо
UISegmentedControl *statFilter = [[UISegmentedControl alloc] initWithItems:[NSArray arrayWithObjects:@"Filter_Personnal", @"Filter_Department", @"Filter_Company", nil]];
[statFilter setSegmentedControlStyle:UISegmentedControlStyleBar];
[statFilter sizeToFit];
self.navigationItem.titleView = statFilter;
Только изменение: я добавил эту строку:
[statFilter sizeToFit];
Надеюсь, что это поможет!!!
Ответ 2
Вы можете создать UIBarButtonItem
с настраиваемым представлением, которое потенциально может быть вашим UISegmentedControl
.
Может возникнуть что-то вроде следующих.
//create segmented control with items
UISegmentedControl *segmentedControl = [[UISegmentedControl alloc] initWithItems:[NSArray arrayWithObjects:@"One", @"Two", nil]];
//create bar button item with segmented control as custom view
UIBarButtonItem *barButtonItem = [[UIBarButtonItem alloc] initWithCustomView:segmentedControl];
//add segmented control bar button item to navigation bar
[[[self navigationController] navigationItem] setRightBarButtonItem:barButtonItem];
Я не тестировал это, но он должен быть на правильном пути того, что вам нужно.