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
发送到分段控件外,我的代码中没有任何技巧。 这对你有用吗?