2015-11-19 1 views
1

У меня есть таблица контактов с изображением [Avatar Image - Name]. И я хочу искать среди этих пользователей. Для этого я создал-структуру [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!)!)) 

Итак, как я могу тоже показать изображения рядом с именем контакта?

+0

Извините, я не могу понять, какие изображения аватаров вы имеете в виду? Будьте ясны, покажите пример. Вы имеете в виду 'образ' из вашей' User' struct? Вы можете использовать его непосредственно из массива 'filtersUsers' – katleta3000

+0

@ katleta3000 да, точно! Это образ из моей структуры. Можете ли вы мне помочь, как я могу его использовать? –

+0

'user.image'? Это даст вам объект 'UIImage' – katleta3000

ответ

2

Вы должны быть в состоянии получить пользователь

let userForRow:User = self.filteredUsers[indexPath.row] 

затем доступ к изображению

userForRow.image 

вы можете использовать стандартную ячейку, чтобы отобразить изображение

cell.imageView.image = userForRow.image 

в DataSource лет 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 
} 
1

Если я правильно понимаю, вы хотите показать табличное представление с ячейками, содержащими имя и изображение. Поэтому просто создайте эту ячейку в Interface Builder (или код, если хотите) с меткой и imageView, а затем, вернув ячейку для своей таблицы, просто укажите имя как текст для метки и изображение как изображение для 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! 
}