2016-06-20 3 views
0

Я создал полностью функционирующий табличный вид, который заполняет его данные из текстового массива (String) и массива изображений (PFFile). Я также внедрил панель поиска, которая отображает отфильтрованные результаты на основе созданного текстового массива.Searchbar не отображает правильное изображение Swift Xcode 7

var fruitArray = [String]() 
var imageFile = [PFFile]() 

проблема заключается в том, что fruitArray [indexPath.row] фильтруется в соответствии с входом в строке поиска, но, панель поиска не может ничего из ImageFile и ImageFile [indexPath.row] Фильтр отображается, как будто ничего не имеет был обыскан.

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { 
    print(fruitArray[indexPath.row]) 

    let cell = tableView.dequeueReusableCellWithIdentifier("Cell", forIndexPath: indexPath) as! TableViewCell 

    if searchController.active && searchController.searchBar.text != "" { 
     cell.labelFruitName?.text = searchResults[indexPath.row] 

    } else { 
     cell.labelFruitName?.text = fruitArray[indexPath.row] 

    } 
    let placeHolder = UIImage(named: "plchlder.png") 
     cell.fruitImages?.image = placeHolder 
     imageFile[indexPath.row].getDataInBackgroundWithBlock { (data, error) -> Void in 

      if let downloadedImage = UIImage(data: data!) { 

       cell.fruitImages?.image = downloadedImage 



      } 

     } 

    return cell 
} 

В результате изображения не будут меняться внутри ячейки. другими словами, перед поиском чего-либо, если первая ячейка показывает текст и изображение яблока, после поиска первая ячейка всегда будет отображать яблоко, но текст и количество ячеек меняются. Любые решения будут оценены. Заранее спасибо

ответ

0

Я предлагаю вам создать массив типа [fruit], где фрукты - это просто структура с изображением и строкой. Затем вы можете отфильтровать плохие яблоки.

Вот код для структуры:

struct Fruit { 
    let name: String 
    let image: PFFile 
} 

Тогда в вашей функции searchResultsUpdating просто отфильтровать условия поиска с помощью простого фильтра:

results = fruitArray.filter{$0.name.containsString(searchController.searchBar.text!)} 
Смежные вопросы