如何正确显示搜索结果?

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!
}