Автоматическое изменение размера в навигационной панели сегментированного элемента управления, построенного динамически

Контроллер добавляет UISegmentedControl к навигационной панели. Сегментированный элемент управления добавляется к навигационной панели методом viewDidLoad контроллера, но фактические сегменты создаются динамически после вызова viewDidLoad.

Я не могу добиться автоматического изменения размера сегментов при отображении вида. Они все сжаты, , как в этом посте , хотя разрешение здесь не применяется. Если сегменты добавляются до того, как сегментированный элемент управления добавлен в правый элемент навигационной панели (нарушая динамическую природу кода), то они автоматически изменяют размер и выглядят нормально при отображении вида.

Ниже приведена урезанная версия моего кода. Что я пропустил?

@implementation MyController    

- (void)viewDidLoad {

    // segmentedControl is an ivar
    segmentedControl = [UISegmentedControl alloc] initWithItems:[NSArray array]];
    UIBarButtonItem *barButtonItem = [[UIBarButtonItem alloc] initWithCustomView:segmentedControl] autorelease];
    self.navigationController.navigationBar.topItem.rightBarButtonItem = barButtonItem;

}

- (void)someMethodCalledAfterViewDidLoad {

    [segmentedControl insertSegmentWithTitle:@"a title"
                                     atIndex:0
                                    animated:NO];
}

@end

6
задан Community 23 May 2017 в 11:47
поделиться