如何将 segmentedControl 和 UISearchController 作为 UITableViewController 标头? (以编程方式)

Posted

技术标签:

【中文标题】如何将 segmentedControl 和 UISearchController 作为 UITableViewController 标头? (以编程方式)【英文标题】:How to have segmentedControl and UISearchController as UITableViewController header? (Programmatically) 【发布时间】:2017-05-19 08:21:44 【问题描述】:

我创建了一个 UISearchController:let mySearchController = UISearchController(searchResultsController: nil) 和一个分段控件:

var mySegmentedControl: UISegmentedControl 
    let items = ["One", "Two", "Three"]
    let segmentedControl = UISegmentedControl(items: items)

    return segmentedControl

我如何将这两者都作为我的 UITableViewController 标头?我尝试将它们都放入 UIView 中,并将 UIView 设置为标题,但是这样做时搜索栏不起作用。

这应该怎么做?

【问题讨论】:

【参考方案1】:

使用scopeButtonTitles 属性:

mySearchController.searchBar.scopeButtonTitles = ["One", "Two", "Three"]

查看this question 了解更多详情。

更新:添加了对 scopeButton 更改的响应:

func searchBar(_ searchBar: UISearchBar, selectedScopeButtonIndexDidChange selectedScope: Int)  
    // respond to your scopeBar selection here
    switch selectedScope 
    case 0:
        print("tab One selected")
        tableView.tintColor = UIColor.red
    case 1:
        print("tab two selected")
        tableView.tintColor = UIColor.blue
    case 2:
        print("tab Three selected")
        tableView.tintColor = UIColor.yellow
    default:
        print("Someone added a tab!")

【讨论】:

如果我使用这些,是否可以根据选择的范围修改 TableViewController 的颜色? 我不明白为什么不这样做。尝试使用func searchBar(_ searchBar: UISearchBar, selectedScopeButtonIndexDidChange selectedScope: Int) // respond to your scopeBar selection here 这里是文档的链接:developer.apple.com/reference/uikit/uisearchbardelegate/… 你必须实现UISearchBarDelegate 不确定你的意思是tintColor 还是别的,但你明白了【参考方案2】:

您可以使用 searchBar 的范围栏属性添加范围按钮。

[yourSearchBar setShowsScopeBar:YES]; 
[yourSearchBar setScopeButtonTitles:@[@"button1",@"button2"]]; 

按故事板

【讨论】:

以编程方式进行,更新了帖子以反映这一点。您知道如何以编程方式或仅在情节提要中进行吗?

以上是关于如何将 segmentedControl 和 UISearchController 作为 UITableViewController 标头? (以编程方式)的主要内容,如果未能解决你的问题,请参考以下文章

如何防止 SwiftUI SegmentedControl 中的文本“弹跳”

SegmentedControl 未检测到更改

有没有办法让 SegmentedControl 一旦被选中就可以再次点击 - iOS

将 UISegmentedControl 与 UISearchController 一起使用

我们如何才能在分段控制中获得分段的矩形框?

利用SegmentedControl切换控制器的view