Я прочитал Событие изменения UISegmentedControl не запускается в iOS5 Двойная проверка, тройная проверка, все еще не могу понять
.h
@interface HomeViewController : UIViewController <PSStackedViewDelegate, UITableViewDelegate, UITableViewDataSource> {
UISegmentedControl *segmentedControl;
}
@property (nonatomic, retain) UISegmentedControl *segmentedControl;
-(IBAction) segmentedControlIndexChanged: (id) sender;
.m
@synthesize segmentedControl;
В viewDidLoad
UIView *containerHeaderView = [[[UIView alloc] initWithFrame:CGRectMake(0, 0, tableView.bounds.size.width, 60)] autorelease];
NSArray *itemArray = [NSArray arrayWithObjects: @"Favoutites", @"All stories", nil];
segmentedControl = [[UISegmentedControl alloc] initWithItems:itemArray];
segmentedControl.frame = CGRectMake( 85.0, 10.0, 300.0, 30.0);
segmentedControl.segmentedControlStyle = UISegmentedControlStyleBar;
[segmentedControl setTintColor: [UIColor colorWithRed:0.80 green:0.80 blue:0.80 alpha:1.0]];
[segmentedControl addTarget:self action:@selector(segmentedControlIndexChanged:) forControlEvents:UIControlEventValueChanged];
segmentedControl.selectedSegmentIndex = 0;
[containerHeaderView addSubview:segmentedControl];
// Add header to table
_tableView.tableHeaderView = containerHeaderView;
Затем позже один в том же .m
// select the first segment
NSLog(@"Switching to News %d",segmentedControl.selectedSegmentIndex);
// iOS4 style
//self.segmentedControl.selectedSegmentIndex = UISegmentedControlNoSegment;
self.segmentedControl.selectedSegmentIndex = 1;
segmentedControl.selectedSegmentIndex = 1;
//iOS5 style
[self.segmentedControl setSelectedSegmentIndex:1];
[segmentedControl setSelectedSegmentIndex:1];
[self.segmentedControl sendActionsForControlEvents:UIControlEventValueChanged];
NSLog(@"After Switch %d",segmentedControl.selectedSegmentIndex);
Распечатывает ...
Switching to News 0
After Switch 0
... сегменты не меняют цвет, индекс не делаетизменить.
Там нет xib
Щелчок по uisegmentcontrol работает нормально, но просто не будет изменяться программно.Хотя установка индекса во время его создания работает.
Почему не установлен setSelectedSegmentIndex ??????
TIA
ОБНОВЛЕНИЕ:
Кажется, проблемазаключается в использовании PSStackedViewDelegate, который заставил представление быть созданным дважды ....