Как центрировать UISegmentControl на панели инструментов в верхней части UIPopoverController

Я видел несколько разных сообщений об этом, но я не могу заставить его работать. В основном у меня есть UITableView, и мне нужны кнопки сортировки в верхней части контроллера всплывающего окна. Я следил за этим сообщением: панель инструментов UIPopoverController вверху, чтобы начать работу. В моем контроллере, который является rootViewController для navigationController, я могу создать UISegmentControl и поместить его вверху. Однако это не похоже на изображение, потому что оно не по центру. Может быть, потому что то, как я получаю это во всплывающем окне, находится в viewDidLoad всплывающего окна следующим образом:

   UISegmentedControl *topSegmentControl = [[UISegmentedControl alloc] initWithItems:[NSArray arrayWithObjects:@"One", @"Two", @"Three", @"Four", nil]];
    topSegmentControl.backgroundColor = [UIColor clearColor];
    topSegmentControl.segmentedControlStyle = UISegmentedControlStyleBar;
    UIBarButtonItem *toolBarCustom = [[UIBarButtonItem alloc] initWithCustomView:topSegmentControl];
//    UIBarButtonItem *spaceItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil];
    self.navigationItem.leftBarButtonItem = toolBarCustom;

Кроме того, если я хочу представить данные в нижней части popovercontroller на панели инструментов, я не знаю, где это сделать. Следуя тому же примеру: панель инструментов UIPopoverController вверху, я подумал, что в своем navigationController я должен что-то сделать нравится:

 UISegmentedControl *topSegmentControl = [[UISegmentedControl alloc] initWithItems:[NSArray arrayWithObjects:@"BottomOne", @"BottomTwo", @"BottomThree", nil]];
//    topSegmentControl.backgroundColor = [UIColor clearColor];
    topSegmentControl.segmentedControlStyle = UISegmentedControlStyleBar;
    UIBarButtonItem *toolBarCustom = [[UIBarButtonItem alloc] initWithCustomView:topSegmentControl];
    UIBarButtonItem *spaceItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil];
    NSArray *array = [NSArray arrayWithObjects:spaceItem, toolBarCustom, spaceItem, nil];
    [navController setToolbarItems:toolBarCustom];
    [navController setToolbarHidden:NO];

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

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


person Crystal    schedule 01.08.2011    source источник


Ответы (1)


Вероятно, лучше всего будет просто установить UISegmentedControl в качестве titleView контроллера корневого представления navigationItem.

person Noah Witherspoon    schedule 01.08.2011
comment
Но UIBarButtonItem не является потомком UIView. - person Crystal; 01.08.2011
comment
Вам не нужно создавать для него UIBarButtonItem. Буквально просто установите self.navigationItem.titleView = topSegmentControl. - person Noah Witherspoon; 01.08.2011