ios - 以编程方式将 UISegmentedControl 添加到 UINavigationBar

标签 ios objective-c uinavigationbar uisegmentedcontrol

如何以编程方式将 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/

相关文章:

objective-c - 动画 UIVisualEffectView 模糊半径?

ios - 强制导航栏为状态栏添加空间

ios - 在 ios 7 中如何增加 UINavigationbar 的大小

ios 11透明导航栏

ios - 如果从通知或跳板触发,如何在 applicationDidBecomeActive 中确定?

ios - Collection View in TableView Show item [VGS.CustumCell collectionView :numberOfItemsInSection:]: unrecognized selector sent to instance

objective-c - Touches 始于 UITableViewController

ios - 让应用程序在越狱设备上自行重启

ios - 模块 'Alamofire' 是为不兼容的目标 arm64 - apple- ios 10 创建的

ios - 指针缺少可空性类型说明符