UISegmentedControl в UIButtonBarItem
У меня есть UISegmentedControl, который я хочу отобразить на панели UIToolbar. Он появляется, но нажатие на него не вызывает метод, который должен. Я что-то пропустил?
Код:
-(void)setupToolbars{
NSArray *segItemsArray = [NSArray arrayWithObjects: @"List", @"Day", @"Month", nil];
segmentedControl = [[UISegmentedControl alloc] initWithItems:segItemsArray];
segmentedControl.selectedSegmentIndex = 2;
[segmentedControl addTarget:self action:@selector(changeView) forControlEvents:UIControlEventTouchUpInside];//this line should make the segmented control call the correct method
UIBarButtonItem *segmentedControlButtonItem = [[UIBarButtonItem alloc] initWithCustomView:(UIView *)segmentedControl];
NSArray *barArray = [NSArray arrayWithObjects: todayButtonItem,flexibleSpace, segmentedControlButtonItem, flexibleSpace, nil];
[bottomToolbar setItems:barArray];
}
-(void)changeView{
NSLog(@"changeView");
...
}
2 ответа
Решение
Вы хотите использовать UIControlEventValueChanged
событие, а не UIControlEventTouchUpInside
событие.
Просто опираясь на то, что сказал Рмадди. Я бы также предложил использовать событие UIControlEventValueChanged.
[segmentedControl addTarget:self action:@selector(didChangeSegmentControl:) forControlEvents:UIControlEventValueChanged];
-(void)didChangeSegmentControl:(UISegmentedControl*) control
{
if (control.selectedSegmentIndex ==0 )
{
//...
}
}