是否可以将UIBarButtonItem添加到分段控件

时间:2011-06-22 01:04:11

标签: objective-c

我想知道是否可以将UIBarButtons添加到SegmentedControl。它编译但产生运行时错误:

-[UIBarButtonItem isEqualToString:]: unrecognized selector sent to instance 0x4b4fcc0

这是我的代码。

UIBarButtonItem *atolButton = [[UIBarButtonItem alloc] initWithTitle:@"A to L"
      style:UIBarButtonItemStyleBordered target:self action:@selector(atol:)];

UIBarButtonItem *ltozButton = [[UIBarButtonItem alloc] initWithTitle:@"L to Z"
      style:UIBarButtonItemStyleBordered target:self action:@selector(ltoz:)];

NSArray *titleButtons = [NSArray arrayWithObjects: atolButton, ltozButton, nil];

UISegmentedControl *segmentedControl = [[UISegmentedControl alloc] initWithItems:titleButtons];
self.navigationItem.titleView = segmentedControl;
[segmentedControl release];
...

- (void)atol:(id) sender {
NSLog(@"atol called");  
}

- (void)ltoz:(id) sender {
    NSLog(@"ltoz called");
}

我已经能够使用以下代码

NSArray *itemArray = [NSArray arrayWithObjects: @"a to l", @"l to z", nil];
UISegmentedControl *segmentedControl = [[UISegmentedControl alloc] initWithItems:itemArray];
segmentedControl.segmentedControlStyle = UISegmentedControlStylePlain;
segmentedControl.selectedSegmentIndex = 1;
[segmentedControl addTarget:self action:@selector(atol:)
     forControlEvents:UIControlEventValueChanged];

self.navigationItem.titleView = segmentedControl;

[segmentedControl release];

1 个答案:

答案 0 :(得分:0)

UISegmentedControl继承自UIControl继承的UIView,因此您可以像对待UIView一样向其添加子视图。

然而,分段方面是完全不同的。每个细分都有image属性和title属性,但这就是全部。

当您调用initWithItems:时,这必须是NSArray UIImagesNSStrings

我不知道您尝试做什么迫使您将按钮添加到分段控制器,但我建议您改为设置{{1}的titleimage属性并以控制器意图触发的任何方法自定义动作。例如:

UISegmentedController

我不知道你想做什么就不能达到这个目的。