在4.0里定义导航条按钮通常是生成普通按钮,再用它生成导航条专用按钮。
- UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
- [button setBackgroundImage:[UIImage imageNamed:@"button_main.png"]
- forState:UIControlStateNormal];
- [button addTarget:self action:@selector(GotoSettings)
- forControlEvents:UIControlEventTouchUpInside];
- button.frame = CGRectMake(x, y, x1, x2);
- UIBarButtonItem *menuButton = [[UIBarButtonItem alloc] initWithCustomView:menu];
- self.navigationItem.rightBarButtonItem = menuButton;
- [button release];
- [menuButton release];
如果是在导航条一边创建多个button,在4.0里是通过segmentcontrol来间接实现
- UISegmentedControl *SegmentedControl = [[UISegmentedControl alloc] initWithItems:
- [NSArray arrayWithObjects:
- @"开始",
- @"暂停", nil]];
- [SegmentedControl addTarget:self action:@selector(segmentAction:)
- forControlEvents:UIControlEventValueChanged];
- SegmentedControl.frame = CGRectMake(0, 0, 80, 30);
- SegmentedControl.segmentedControlStyle = UISegmentedControlStyleBar;
- SegmentedControl.momentary = YES;
- SegmentedControl.tintColor = [UIColor colorWithHue:0.6 saturation:0.33 brightness:0.69 alpha:0];
- //defaultTintColor = [segmentedControl.tintColor retain]; // keep track of this for later
- UIBarButtonItem *segmentBarItem = [[UIBarButtonItem alloc]
- initWithCustomView:SegmentedControl];
- self.navigationItem.rightBarButtonItem = segmentBarItem;
之后 通过Action方法判断是哪个button被按下
- - (void)segmentAction:(id)sender
- {
- //NSLog(@"segmentAction: selected segment = %d", [sender selectedSegmentIndex]);
- if ([sender selectedSegmentIndex] == 0) {
- //[self startAll];
- }else if ([sender selectedSegmentIndex] == 1) {
- //[self stopAll];
- }
- }
在iOS 5.0中,导航条引入了新的方法 setLeftBarButtonItems:animated:和setRightBarButtonItems:animated:来直接定义左右侧的多个button,方便了许多
- UIBarButtonItem *startBtn = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemPlay target:self action:@selector(startDownloadAll)];
- UIBarButtonItem *pauseBtn = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemPause target:self action:@selector(stopDownloadAll)];
- [self.navigationItem setRightBarButtonItems:[NSArray arrayWithObjects: pauseBtn,startBtn,nil]];