UINavigationBar に UISegmentControlを置く
真ん中に置く場合
UISegmentedControl *segmentedControl = [[UISegmentedControl alloc] initWithItems: [NSArray arrayWithObjects: @"Daily", @"Weekly", @"Total", nil]]; [segmentedControl addTarget:self action:@selector(segmentChanged:) forControlEvents:UIControlEventValueChanged]; segmentedControl.frame = CGRectMake(0, 0, 180, 30); segmentedControl.segmentedControlStyle = UISegmentedControlStyleBar; segmentedControl.selectedSegmentIndex = 0; [self.navigationItem setTitleView:segmentedControl]; [segmentedControl release];
ポイント:UISegmentedControlのインスタンスを直接titleViewに入れる
右に置く場合
UISegmentedControl *segmentedControl = [[UISegmentedControl alloc] initWithItems: [NSArray arrayWithObjects: [UIImage imageNamed:K_IMAGE_UPARROW], [UIImage imageNamed:K_IMAGE_DOWNARROW], nil]]; [segmentedControl addTarget:self action:@selector(segmentChanged:) forControlEvents:UIControlEventValueChanged]; segmentedControl.frame = CGRectMake(0, 0, 90, 30); segmentedControl.segmentedControlStyle = UISegmentedControlStyleBar; segmentedControl.momentary = YES; UIBarButtonItem *segmentBarItem = [[UIBarButtonItem alloc] initWithCustomView:segmentedControl]; [segmentedControl release]; self.navigationItem.rightBarButtonItem = segmentBarItem; [segmentBarItem release];
ポイント:UISegmentedControlのインスタンスをUIBarButtonItemに入れてからrightBarButtonItemに入れる