gpt4 book ai didi

ios - 类型 'ViewController' 不符合协议(protocol) 'UISearchResultsUpdating'

转载 作者:搜寻专家 更新时间:2023-11-01 05:58:18 25 4
gpt4 key购买 nike

我想设置一个 tableView 来搜索我需要的单元格,但是有一个问题。首先,我使用名为 UISearchDisplayController 的协议(protocol),但 Xcode 警告在 IOS 8.0 中不好,所以我阅读了协议(protocol) UISearchResultUpdating。但是当我在我的 Viewcontroller 中添加 UISearchResultUpdating 时,UISearchResultUpdating 出现错误!

Type 'ViewController' does not conform to protocol 'UISearchResultsUpdating'

我应该怎么做才能解决?

class ViewController:UIViewController,UITableViewDataSource,UITableViewDelegate,UISearchResultsUpdating {

@IBOutlet weak var tableview: UITableView!

override func viewDidLoad() {
super.viewDidLoad()

// Do any additional setup after loading the view, typically from a nib.
tools = [TodoModel(id: "1", image: "QQ", title: "聊天", date: DateFromString("2013-12-13")!),
TodoModel(id: "2", image: "unbrella", title: "下雨", date: DateFromString("2013-12-13")!),
TodoModel(id: "3", image: "plane", title: "飞行", date: DateFromString("2013-12-13")!)]
navigationItem.leftBarButtonItem = editButtonItem()
}

override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int{
if tableview == searchDisplayController?.searchResultsTableView{
return filtertool.count
}
else {
return tools.count

}
}

// Row display. Implementers should *always* try to reuse cells by setting each cell's reuseIdentifier and querying for available reusable cells with dequeueReusableCellWithIdentifier:
// Cell gets various attributes set automatically based on table (separators) and data source (accessory views, editing controls)

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell{
let cell = self.tableview.dequeueReusableCellWithIdentifier("cellinit") as! UITableViewCell
var tool : TodoModel
if tableview == searchDisplayController?.searchResultsTableView{
tool = filtertool[indexPath.row] as TodoModel
}
else { tool = tools[indexPath.row] }
var image = cell.viewWithTag(1) as! UIImageView
var title: UILabel = cell.viewWithTag(2) as! UILabel
var date: UILabel = cell.viewWithTag(3) as! UILabel
image.image = UIImage(named: tool.image)
title.text = tool.title
let local = NSLocale.currentLocale()
let dateformat = NSDateFormatter.dateFormatFromTemplate("yyyy-MM-dd", options: 0, locale: local)
let datematter = NSDateFormatter()
datematter.dateFormat = dateformat
date.text = datematter.stringFromDate(tool.date)
return cell

}
func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat {
return 65
}
func tableView(tableView: UITableView, commitEditingStyle editingStyle: UITableViewCellEditingStyle, forRowAtIndexPath indexPath: NSIndexPath){
if editingStyle == UITableViewCellEditingStyle.Delete {
tools.removeAtIndex(indexPath.row)
self.tableview.deleteRowsAtIndexPaths([indexPath], withRowAnimation: UITableViewRowAnimation.Automatic)
}
}

override func setEditing(editing: Bool, animated: Bool) {
super.setEditing(editing, animated: animated)
self.tableview.setEditing(editing, animated: animated)
}
@IBAction func close(segue: UIStoryboardSegue){
tableview.reloadData()
}
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
if segue.identifier == "EditingSegue"{
var vc = segue.destinationViewController as!
EditingView
var indexpath = tableview.indexPathForSelectedRow()
if let index = indexpath {
vc.tool = tools[index.row]
}
}
}
func tableView(tableView: UITableView, moveRowAtIndexPath sourceIndexPath: NSIndexPath, toIndexPath destinationIndexPath: NSIndexPath){
let tool = tools.removeAtIndex(sourceIndexPath.row)
tools.insert(tool, atIndex: destinationIndexPath.row)
}

func tableView(tableView: UITableView, canMoveRowAtIndexPath indexPath: NSIndexPath) -> Bool
{
return editing
}
func searchDisplayController(controller: UISearchDisplayController, shouldReloadTableForSearchString searchString: String!) -> Bool{
filtertool = tools.filter(){$0.title.rangeOfString(searchString) != nil }
return true
}
}

最佳答案

看来你还没有实现 UISearchResultsUpdating 的委托(delegate)方法

您需要在代码中包含以下方法:

func updateSearchResultsForSearchController(searchController: UISearchController){
//your code
}

关于ios - 类型 'ViewController' 不符合协议(protocol) 'UISearchResultsUpdating',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32431545/

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