0

我有一个UISegmentedControl,我想要出现在UIToolbar中。它出现了,但点击它不会调用它应该的方法。我错过了什么?UISuttonBarItem中的UISegmentedControl

代码:

-(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"); 
    ... 
} 

回答

1

您要使用的UIControlEventValueChanged事件,而不是UIControlEventTouchUpInside事件。

1

只是建立在rmaddy的陈述之上。我也建议使用UIControlEventValueChanged事件。

[segmentedControl addTarget:self action:@selector(didChangeSegmentControl:) forControlEvents:UIControlEventValueChanged]; 


-(void)didChangeSegmentControl:(UISegmentedControl*) control 
{ 
    if (control.selectedSegmentIndex ==0) 
    { 
      //... 
    } 
}