我需要以编程方式在导航项上实现UISegmentedControl
,因为我do not have XIB for that
。
导航项已有title
,left bar button
和right bar button
我可以将其放在left bar button
和title
另外,如何以语法方式向该控件发送事件?
我使用了以下代码:
segImport = [[UISegmentedControl alloc] initWithItems:[NSArray arrayWithObjects:@"Own",@"Imported",nil]];
[segImport setFrame:CGRectMake(80, 0, 200, 30)];
[segImport setSegmentedControlStyle:UISegmentedControlStyleBar];
答案 0 :(得分:5)
导航栏中没有太多空间,但您可以将分段控件添加到导航栏的标题视图中,如下所示:
[[self navigationItem] setTitleView:segImport];
查看此article以获取有关完成此操作的完整教程。
答案 1 :(得分:3)
@Heena:嗨..
您只需像往常一样准备UISegmented控件。
然后你需要使用:
UIBarButtonItem * seg = [[UIBarButtonItem alloc] initWithCustomView:segmentControlObject];
self.navigationItem.rightBarButtonItem = seg;
希望这有帮助。
修改强>
至于你是否可以将它放在leftbarbutton和title之间。那么答案是否定的,你不能这样做。
但如果您想要一种方法让它工作/解决,请随时与我联系。
答案 2 :(得分:1)
以下代码可以为您提供帮助,
UIView *customView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 150, 40)];
UISegmentedControl *segment = [[UISegmentedControl alloc] initWithItems:@[@"One", @"Two", @"Three"]];
segment.frame = CGRectMake(0, 0, 150, 40);
[segment addTarget:self action:@selector(onSegmentChanged:) forControlEvents:UIControlEventValueChanged];
[customView addSubview:segment];
self.navigationItem.titleView = customView;
- (void)onSegmentChanged:(id)sender
{
UISegmentedControl *segment = (UISegmentedControl *)sender;
if (segment.selectedSegmentIndex == 0) {
}
else if (segment.selectedSegmentIndex == 1) {
}
else if (segment.selectedSegmentIndex == 2) {
}
}
答案 3 :(得分:0)
导航栏有点棘手。我不认为你可以将另一个项目作为子视图添加到其中,因为你达到最多两个,所以你只需要将UISegmentedControl放在导航栏上。至于检测分段控件的选定段何时更改,请使用以下switch语句:
switch (self.segementControl.selectedSegmentIndex) {
case 0: {
//the first segment is selected
break;
} case 1: {
//the second segment is selected
break;
} case 2: {
//the third segment is selected
break;
} default: {
break;
}