2016-06-09 3 views
0

Так вот что произошло: я создал tableView и делегировал ему некоторые вещи с другого контроллера. Текстовые метки из ячеек работают нормально, но всякий раз, когда я добавляю cell.imageView?.image, все ячейки меняются на это конкретное изображение.Prototype cell + image + delegate

Любые идеи о том, как исправить это? Текстовые метки являются статическими, но изображения не являются.

Здесь я получаю изображение на Tableview:

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { 
    let cell = tableView.dequeueReusableCellWithIdentifier("cell", forIndexPath: indexPath) as UITableViewCell! 
    let row = indexPath.row 
    let titulo = arrayInfo[row] 
    let image = imgR 
    cell.textLabel!.text = titulo 
    cell.imageView?.image = image 

    return cell 
} 

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { 
    if(segue.identifier == "add") { 
     let view = segue.destinationViewController as! EsseVaiPassar 
      view.delegate = self 
      view.delegateimg = self 
    } 
} 

и здесь я передаю его от контроллера к другому с Tableview:

func imagePickerController(picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : AnyObject]) { 
     let pickedImage = info[UIImagePickerControllerOriginalImage] as? UIImage 
     imagemRecebida.contentMode = .ScaleAspectFit 
     imagemRecebida.image = pickedImage 

     delegateimg?.passImage(pickedImage!) 
     print("IMAGE PICKED: \(pickedImage)") 

     dismissViewControllerAnimated(true, completion: nil) 
    } 

    func imagePickerControllerDidCancel(picker: UIImagePickerController) { 
     dismissViewControllerAnimated(true, completion: nil) 
    } 

ответ

2

Код работает так, как планировалось. Для вашего текста вы запрашиваете значение arrayInfo[row]. Таким образом, для каждой ячейки при изменении indexPath.row соответствующий элемент из массива отображается в текстовом поле.

Но для вашего изображения это всего лишь одно изображение, а не массив. Вы не используете indexPath.row, чтобы выбрать конкретное изображение.

Чтобы добавить разные образы в таблицуView, просто создайте массив изображений, например, вы создали массив из String. Просто реализовать логику вы осуществившая для TextView cell.imageView?.image = image[indexPath.row]

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

if indexPath.row == 0 
{ 
    cell.imageView?.image = image 
} 
+0

работает хорошо и гладко. Спасибо! –

+0

Кроме того, вы знаете какую-либо хорошую онлайн-базу данных, которую я мог бы использовать для создания пользователей? Я просто видел, что Parse будет шунтирован = ( –

+0

Извините, я не знаю. Не бойся, Google - ваш друг :) – ebby94

0

В `cellForRowAtIndexPath» у вас есть это код:

... 
let image = imgR 
cell.textLabel!.text = titulo 
cell.imageView?.image = image 
... 

Вы назначаете imgR к image, то вы назначаете image на imageView?.image, поэтому каждая ячейка получит изображение, сохраненное в переменной imgR.

Если у вас есть несколько изображений, вам нужно поместить логику, чтобы вытащить правильное изображение для правильной строки (обычно это массив элементов).