embedded到UINavigationBar / Item中的UISegmentedControl

我想在我的UINavigationController的顶UISegmentedControl某处embedded一个UISegmentedControl

将它embedded到UIBarButtonItem并将其设置为左或右barButtonItem是没有问题的。

在处理iPhone的屏幕空间时,我可以理解这种方法。 不过,我在iPad上的Popover中做这个,在顶栏中有很多垂直空间可用。 如果我添加segmentedControl作为一个左或右barButtonItem它缩小,以便我看不到我的段button上的文本,它将成为一个“完成”button的宽度等。如果我尝试将其添加到navigationItem TitleView它会一直显示在右边,并且比我的3段控件还显示更多的文字可以显示。

我将如何去添加一个UISegmentedControl到包装我的popup内容的UINavigationController的中心。

希望有人能帮助我:)提前致谢。

为什么你需要把控制放在popover标题栏? iPad有更多的屏幕房地产,可以考虑把它放在下面的视图。

– 编辑 –

我自己试了一下,它工作。 这里是设置popover控制器的代码:

 - (IBAction) showPopover: (id) sender { TestController *testController = [[TestController alloc] initWithStyle: UITableViewStylePlain]; UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController: testController]; UIPopoverController *controller = [[UIPopoverController alloc] initWithContentViewController: navController]; [controller presentPopoverFromBarButtonItem: sender permittedArrowDirections: UIPopoverArrowDirectionAny animated: YES]; controller.delegate = self; [testController release]; [navController release]; } 

这里是TestController的实现:

 - (id) initWithStyle: (UITableViewStyle) style { if ( (self = [super initWithStyle: style]) ) { UISegmentedControl *ctrl = [[UISegmentedControl alloc] initWithFrame: CGRectZero]; ctrl.segmentedControlStyle = UISegmentedControlStyleBar; [ctrl insertSegmentWithTitle: @"One" atIndex: 0 animated: NO]; [ctrl insertSegmentWithTitle: @"Two" atIndex: 0 animated: NO]; [ctrl insertSegmentWithTitle: @"Three" atIndex: 0 animated: NO]; [ctrl sizeToFit]; // Any of the following produces the expected result: self.navigationItem.titleView = ctrl; //self.navigationItem.leftBarButtonItem = [[[UIBarButtonItem alloc] initWithCustomView: ctrl] autorelease]; [ctrl release]; } return self; } 

结果如下:

替代文字替代文字

除了将sizeToFit发送到分段控件外,我的代码中没有任何技巧。 这对你有用吗?