单击指定单元格后,在搜索栏占位符中获取表格视图单元格文本值
Posted
技术标签:
【中文标题】单击指定单元格后,在搜索栏占位符中获取表格视图单元格文本值【英文标题】:Getting Table View Cell text Value in Searchbar Placeholder once a specified cell is clicked 【发布时间】:2017-12-29 12:38:49 【问题描述】:我的 ViewController 包含一个 Table View。我正在从 JSON 获取数据,并且已经能够在我的 表格视图单元格 中显示这些值。还有搜索栏用于过滤目的。
我想在点击特定单元格时将我的表格视图单元格文本作为我的搜索栏占位符。 p>
我希望在单击特定单元格时将 Baramunda 作为我的占位符文本。
我的代码如下。
func searchBar()
let searchBar = UISearchBar(frame: CGRect(x: 0, y: 0, width: self.view.frame.width, height: 50));
searchBar.delegate = self
searchBar.showsScopeBar = true
searchBar.tintColor = UIColor.green
self.view .addSubview(searchBar)
func searchBar(_ searchBar: UISearchBar, textDidChange searchText: String)
if searchText == ""
tableView.alpha = 0.0
searchBar.placeholder = "Search Location Here"
parseData()
else
if searchBar.selectedScopeButtonIndex == 0
tableView.alpha = 1.0
areaNameArr = areaNameArr.filter( (anyobject) -> Bool in
return (anyobject.lowercased.contains(searchText.lowercased()))
)
else
print("Do Nothing")
self.tableView.reloadData()
public func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int
return areaNameArr.count
public func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell
let cell = tableView.dequeueReusableCell(withIdentifier: "cell" )
cell?.backgroundColor = UIColor .black
cell?.textLabel?.textColor = UIColor .white
cell?.textLabel?.text = areaNameArr[indexPath.row] as? String
return cell!
【问题讨论】:
你为此做了什么?显示一些代码。 @srsstyle 您希望选定单元格的文本作为搜索栏的文本还是搜索栏的占位符?我希望你知道区别 有什么问题?你的问题似乎微不足道。 @Apogee 搜索栏的占位符而已。 @Umar 我想在点击特定单元格时在搜索栏的占位符值中获取单元格文本值。 【参考方案1】:您需要将您的 searchBar 变量声明为全局变量,以便在您的函数 searchBar() 之外访问。
class ViewController: UIViewController
let searchBar = UISearchBar()
override func viewDidLoad()
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
//here goes your code of viewDidLoad
//This is your function for creating search bar ,only first line is changed and rest is same
func searchBar()
searchBar.frame(forAlignmentRect: CGRect(x: 0, y: 0, width: self.view.frame.width, height: 50))
searchBar.delegate = self
searchBar.showsScopeBar = true
searchBar.tintColor = UIColor.green
self.view .addSubview(searchBar)
// this delegate method is called when cell is tapped
// remember to connect delegate from storyboard or you can use self.tableView.delegate = self
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath)
//here get the text from tapped cell index
let tappedCellText = areaNameArr[indexPath.row] as? String
// here set placeholder
searchBar.placeholder = tappedCellText
// when cell is clicked you need to set text of search bar to nil or blank otherwise you would not be able to see placeholder text because some text is already there in search bar
searchBar.text = ""
// if you don't cleanup text from search bar you will be required to delete text from search bar manually to see placeholder text
如果这对您没有帮助,请告诉我
【讨论】:
我现在收到此错误 'searchBar()' 的重新声明无效。在这一行 func searchBar() . 已解决@Vikky 谢谢。【参考方案2】:我现在没有 xcode,但应该可以使用。
在 tableView 的 didSelectCell 委托方法中添加以下代码
var searchTextField: UITextField? = searchBar.value(forKey: "searchField") as? UITextField
if searchTextField!.responds(to: #selector(getter: UITextField.attributedPlaceholder))
let attributeDict = [NSAttributedStringKey.foregroundColor: UIColor.white]
searchTextField!.attributedPlaceholder = NSAttributedString(string: "Search", attributes: attributeDict)
【讨论】:
能否请您提供该方法定义(didSelectCell)。以上是关于单击指定单元格后,在搜索栏占位符中获取表格视图单元格文本值的主要内容,如果未能解决你的问题,请参考以下文章