gpt4 book ai didi

iOS:类似于邮件或消息应用程序的可滚动搜索栏

转载 作者:行者123 更新时间:2023-11-30 13:59:23 25 4
gpt4 key购买 nike

新的 iOS 开发人员来了!我喜欢向上滚动到隐藏搜索栏的设计。我想复制它,但很多解决方案似乎已经过时,所以我真的很困惑。

iPhone: Hide UITableView search bar by default

从这里开始,似乎有两个步骤。

  1. 将搜索栏添加到可滚动表格 View
  2. 添加代码,以便使用

    在应用程序加载时滚动到第二行(在 viewdidload 中?)

    yourTableView.scrollToRowAtIndexPath(NSIndexPath(forRow: 0, inSection: 0), atScrollPosition: UITableViewScrollPosition.Top, 动画: false)

我无法通过#1。我尝试在 3 个位置添加搜索栏...

enter image description here

  • A)如果我把它放在这里(在标题顶部?)它会按预期粘在顶部,但不可滚动。
  • B)如果我把它放在这里,它仍然不可滚动并且会挡住第一行
  • C) 如果我把它放在这里,它会像预期的那样在行上重复。

不知何故,我需要将它放在 table 上而不重复,所以我对此感到困惑。

最佳答案

所以我认为你必须在代码中做到这一点。如果您想这样做,我按照这里的教程操作并且成功了。

http://www.ioscreator.com/tutorials/add-search-table-view-tutorial-ios8-swift

添加 UISearchResultsUpdating

class TableViewController: UITableViewController, UISearchResultsUpdating {

添加这些属性...

let tableData = ["One","Two","Three","Twenty-One", "vasdf", "vasdfd", "3343", "ad23", "454d", "vasdf32", "va343", "vasdf3r2", "vasdfd2", "vasr52f", "awefwr32vwf"]
var filteredTableData = [String]()
var resultSearchController = UISearchController()

在此处添加 self.resultSearchController...

override func viewDidLoad() {
super.viewDidLoad()

self.resultSearchController = ({
let controller = UISearchController(searchResultsController: nil)
controller.searchResultsUpdater = self
controller.dimsBackgroundDuringPresentation = false
controller.searchBar.sizeToFit()

self.tableView.tableHeaderView = controller.searchBar

return controller
})()

// Reload the table
self.tableView.reloadData()
}

注意这些函数中的 self.resultSearchController.active 条件...

override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
// 2
if (self.resultSearchController.active) {
return self.filteredTableData.count
}
else {
return self.tableData.count
}
}


override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCellWithIdentifier("Cell", forIndexPath: indexPath)

// 3
if (self.resultSearchController.active) {
cell.textLabel?.text = filteredTableData[indexPath.row]

return cell
}
else {
cell.textLabel?.text = tableData[indexPath.row]

return cell
}
}

然后在此处执行搜索代码

func updateSearchResultsForSearchController(searchController: UISearchController)
{
filteredTableData.removeAll(keepCapacity: false)

let searchPredicate = NSPredicate(format: "SELF CONTAINS[c] %@", searchController.searchBar.text as String!)
let array = (tableData as NSArray).filteredArrayUsingPredicate(searchPredicate)
filteredTableData = array as! [String]

self.tableView.reloadData()
}

我认为就是这样。祝你好运!

关于iOS:类似于邮件或消息应用程序的可滚动搜索栏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33181783/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com