如何以编程方式将 UISegmentedControl 添加到 UINavigationBar?
我不想为此使用 XIB 文件。
我有一个 UIView 和一个作为 subview 添加的 UITableView。
我尝试了两种方法,但都不尽如人意:
1)
self.segmentedControl = [[UISegmentedControl alloc]initWithItems:[NSArray arrayWithObjects:@"All",@"Subject",@"Category",@"Finished",nil]];
self.segmentedControl.backgroundColor = [UIColor cloudsColor];
[self.segmentedControl setSelectedSegmentIndex:0];
[self.segmentedControl addTarget:self action:@selector(segmentedControlHasChangedValue) forControlEvents:UIControlEventValueChanged];
self.mainView.tableHeaderView = self.segmentedControl;
第一个失败的原因是在 UITableView 中,当用户滚动时,分段控件也会滚动!我不希望发生这种情况。它必须固定在顶部。
2)第二次尝试
UISegmentedControl *statFilter = [[UISegmentedControl alloc] initWithItems:[NSArray arrayWithObjects:@"Filter_Personnal", @"Filter_Department", @"Filter_Company", nil]];
[statFilter setSegmentedControlStyle:UISegmentedControlStyleBar];
[statFilter sizeToFit];
self.navigationItem.titleView = statFilter;
这会删除我的头衔!!!我在 UINavigationBar 的顶部有一个标题,此方法将其删除!!
这是我想要完成的示例:UISegmentedControl below UINavigationbar in iOS 7
UISegmentedControl 必须作为 UINavigationBar 的一部分固定在下方,并且必须位于标题下方!
谢谢!
最佳答案
使用 tableView:viewForHeaderInSection:
(可能还有 tableView:heightForHeaderInSection:
)代替 tableHeaderView
。将 tableStyle
设置为 UITableViewStylePlain
(这应该是默认设置)。
关于ios - 以编程方式将 UISegmentedControl 添加到 UINavigationBar,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23965009/