如何将 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 一旦被选中就可以再次点击 - iOS