その後のその後

iOSエンジニア 堤 修一のブログ github.com/shu223

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に入れる