15

我正在UISegmentedControl以编程方式将 a 添加到导航栏titleView应该在的位置。但正如Apple 文档在 下所述titleView如果 leftBarButtonItem 不是 nil,则忽略此属性

但我也想要后退按钮。就像他们在自己的图像中说明的那样!

在此处输入图像描述

下面是我添加的代码UISegmentedControl

self.navigationItem.leftBarButtonItem = nil;
UISegmentedControl *statFilter = [[UISegmentedControl alloc] initWithItems:[NSArray arrayWithObjects:@"Filter_Personnal", @"Filter_Department", @"Filter_Company", nil];
[statFilter setSegmentedControlStyle:UISegmentedControlStyleBar];
self.navigationItem.titleView = statFilter;

是否还有另一种方法可以添加UISegmentedControl“后退”按钮?

谢谢你。

4

2 回答 2

23

尝试这个

删除这一行--->self.navigationItem.leftBarButtonItem = nil;

改为添加

UISegmentedControl *statFilter = [[UISegmentedControl alloc] initWithItems:[NSArray arrayWithObjects:@"Filter_Personnal", @"Filter_Department", @"Filter_Company", nil]];
[statFilter setSegmentedControlStyle:UISegmentedControlStyleBar];
[statFilter sizeToFit];
self.navigationItem.titleView = statFilter;

唯一的变化是我添加了这一行:

[statFilter sizeToFit];

希望这可以帮助 !!!

于 2013-03-13T10:58:05.320 回答
3

您可以UIBarButtonItem使用自定义视图创建一个可能是您的UISegmentedControl.

以下内容可能会起作用。

//create segmented control with items
UISegmentedControl *segmentedControl = [[UISegmentedControl alloc] initWithItems:[NSArray arrayWithObjects:@"One", @"Two", nil]];

//create bar button item with segmented control as custom view
UIBarButtonItem *barButtonItem = [[UIBarButtonItem alloc] initWithCustomView:segmentedControl];

//add segmented control bar button item to navigation bar
[[[self navigationController] navigationItem] setRightBarButtonItem:barButtonItem];

我没有对此进行测试,但它应该符合您的需求。

于 2013-03-13T10:48:11.010 回答