2015-08-18 4 views
0

В методе tableView(tableView:, cellForRowAtIndexPath:) -> UITableViewCell, как установить дополнительное изображение через ячейку?Как установить образ изображения UITableViewCell?

cell!.imageView?.image = someLoadedImage в этом случае, если imageView: UIImageView? свойство cell является nil, когда построен, то задание будет провалено, верно?

В соответствии с «Руководством по быстрому программированию», john.residence?.address = someAddress: «В этом примере попытка установить свойство адреса john.residence не будет выполнена, так как john.residence в настоящее время равна нулю» (необязательная цепочечная цепочка).

class Residence { 
    ... 
    var address: Address? 
} 
class Person { 
    var residence: Residence? 
} 
let john = Person() 
let someAddress = Address() 
john.residence?.address = someAddress // will fail 

вот код:

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { 
     var cell = tableView.dequeueReusableCellWithIdentifier(simpleTableIdentifier) 
      as? UITableViewCell 
     if cell == nil { 
      cell = UITableViewCell(style: .Default, reuseIdentifier: simpleTableIdentifier) 
     } 
     let image = UIImage(named: "star") 
     let highlightedImage = UIImage(named: "star2") 
     cell!.imageView?.image = image // can compile and run 
     cell!.imageView?.highlightedImage = highlightedImage 

     cell?.textLabel!.text = dwarves[indexPath.row] 
     return cell! 
    } 
+0

В чем проблема? – Roger

+0

проблема заключается в том, что если присваивается 'cell! .imageView? .image = image', это должно завершиться неудачей? но приложение может компилироваться и запускаться. Когда ячейка инициализируется, свойство imageView должно быть 'nil' правильным? – wxwcase

+0

Это будет не ноль, как cell.textLabel не будет ник. Вы используете ячейки по умолчанию, снабженные табличным представлением. Если у вас есть пользовательская ячейка с представлением изображения в ней, она будет равна нулю, если вы не инициализируете ее. –

ответ

0

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

+0

да, но это не сработает: 'let imageview = UIImageView (изображение: изображение, выделенноеImage: highlightImage); cell! .imageView = imageview' После инициализации ячейки с использованием стиля '.Default' – wxwcase

Смежные вопросы