Я создавал свое приложение в основном программным способом и пытался добавить UISegmentedControl на панель инструментов UINavigationControl. У меня есть представление, созданное и показанное, и действие, когда UISegmentedControl выбран. Проблема в том, что в любой момент, когда я вызываю selectedSegmentIndex, он возвращает нулевое значение. Есть идеи почему?
NSArray *segmentArray = [[NSArray alloc] initWithObjects:@"Factory Laods", @"User Loads", nil];
UISegmentedControl *segmentedControl = [[UISegmentedControl alloc] initWithItems: segmentArray];
segmentedControl.segmentedControlStyle = UISegmentedControlStyleBar;
[segmentedControl addTarget:self action:@selector(action:) forControlEvents:UIControlEventValueChanged];
UIBarButtonItem *segmentedButton = [[UIBarButtonItem alloc] initWithCustomView:segmentedControl];
UIBarButtonItem *flexibleSpace = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil];
NSArray *array = [[NSArray alloc] initWithObjects:flexibleSpace, segmentedButton, flexibleSpace, nil];
[self setToolbarItems:array];
-------- метод действия ------------
- (void) action:(id)sender {
UISegmentedControl *segment = (UISegmentedControl *) sender;
NSLog(@"Button %@", [segment selectedSegmentIndex]);
}
Объект FlexibleSpace - это UIBarButtonItem, инициализированный как простое пространство для центрирования UISegmentedControl. После того, как этот элемент добавлен, я могу добавить инструкцию NSLog и определить нулевое значение для selectedSegmentIndex, а также оно будет нулевым, когда событие инициируется и проверяется в методе действия. Спасибо!