如何正确显示搜索结果?
How to correctly show search results?
我有一个带有 [头像图片 - 姓名] 的联系人列表 tableView。我想在这些用户中搜索。为此,我创建了一个结构 [User.swift]:
struct User {
let name : String
let image: UIImage
}
我通过以下方式搜索:
func filterContentForSearchText(searchText: String, scope: String = "All") {
self.filteredUsers = self.users.filter({( user : User) -> Bool in
let stringMatch = user.name.rangeOfString(searchText)
return (stringMatch != nil)
})
}
但它按预期仅按字符串部分(在名称中)进行搜索。现在,如何连接到它的联系人头像图片?
我将所有内容保存在一个数组中 var users = [User]()
为:
self.users.append(User(name: user.displayName, image: UIImage(data: photoData!)!))
那么,如何让图片显示得离联系人姓名太近?
你应该可以得到你的用户
let userForRow:User = self.filteredUsers[indexPath.row]
然后访问图像
userForRow.image
您可以使用标准单元格来显示图像
cell.imageView.image = userForRow.image
在数据源的 cellForRowAtIndexPath
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let user = filteredUsers[indexPath.row]
let cell = tableView.dequeueReusableCellWithIdentifier("cell", forIndexPath indexPath)
cell.textLabel.text = user.name
cell.imageView.image = user.image
return cell
}
如果我的理解没错,您想要显示一个 table 视图,其中的单元格包含名称和图像。因此,只需在 Interface Builder 中创建此单元格(或代码,如果需要),并带有标签和图像视图,然后在返回 table 的单元格时,只需将名称设置为标签的文本,并将图像设置为图像的图像imageView.
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
var cell : UserContactCell?
let userAtIndexPath = filteredUsers[indexPath.row]
let name = userAtIndexPath.name
let image = userAtIndexPath.image
cell = tableView.dequeueReusableCellWithIdentifier("userContactCell") as? UserContactCell
if(cell == nil)
{
tableView.registerNib(UINib(nibName: "UserContactCell", bundle: nil), forCellReuseIdentifier: "userContactCell")
cell = tableView.dequeueReusableCellWithIdentifier("userContactCell") as? UserContactCell
}
}
cell!.nameLabel.text = name
cell!.imageView.image = image
return cell!
}
我有一个带有 [头像图片 - 姓名] 的联系人列表 tableView。我想在这些用户中搜索。为此,我创建了一个结构 [User.swift]:
struct User {
let name : String
let image: UIImage
}
我通过以下方式搜索:
func filterContentForSearchText(searchText: String, scope: String = "All") {
self.filteredUsers = self.users.filter({( user : User) -> Bool in
let stringMatch = user.name.rangeOfString(searchText)
return (stringMatch != nil)
})
}
但它按预期仅按字符串部分(在名称中)进行搜索。现在,如何连接到它的联系人头像图片?
我将所有内容保存在一个数组中 var users = [User]()
为:
self.users.append(User(name: user.displayName, image: UIImage(data: photoData!)!))
那么,如何让图片显示得离联系人姓名太近?
你应该可以得到你的用户
let userForRow:User = self.filteredUsers[indexPath.row]
然后访问图像
userForRow.image
您可以使用标准单元格来显示图像
cell.imageView.image = userForRow.image
在数据源的 cellForRowAtIndexPath
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let user = filteredUsers[indexPath.row]
let cell = tableView.dequeueReusableCellWithIdentifier("cell", forIndexPath indexPath)
cell.textLabel.text = user.name
cell.imageView.image = user.image
return cell
}
如果我的理解没错,您想要显示一个 table 视图,其中的单元格包含名称和图像。因此,只需在 Interface Builder 中创建此单元格(或代码,如果需要),并带有标签和图像视图,然后在返回 table 的单元格时,只需将名称设置为标签的文本,并将图像设置为图像的图像imageView.
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
var cell : UserContactCell?
let userAtIndexPath = filteredUsers[indexPath.row]
let name = userAtIndexPath.name
let image = userAtIndexPath.image
cell = tableView.dequeueReusableCellWithIdentifier("userContactCell") as? UserContactCell
if(cell == nil)
{
tableView.registerNib(UINib(nibName: "UserContactCell", bundle: nil), forCellReuseIdentifier: "userContactCell")
cell = tableView.dequeueReusableCellWithIdentifier("userContactCell") as? UserContactCell
}
}
cell!.nameLabel.text = name
cell!.imageView.image = image
return cell!
}