2015-03-12 6 views
0

я следующий Swift код, который в основном автогенерируемые один раз в TableView Добавлен:Как назначить значение ячейке таблицы?

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { 
    let cell:UITableViewCell = UITableViewCell(style: UITableViewCellStyle.Default, reuseIdentifier: "test") 
    return cell.textLabel.text = "test" 
} 

я получаю следующее компиляции ошибки времени:

Cannot assign a value of type 'String' to a value of type 'String?' 

Я попытался ! (разворачивая) в синтаксис cell.textLabel.text без эффекта. Любые идеи, что я делаю неправильно?

ответ

1

TextLabel как часть UITableViewCell не является обязательным, и поэтому вы должны изменить свой код на этот:

cell.textLabel?.text = "test" 
return cell 

Чтобы добавить на это, вы не должны получать вашу клетку, используя этот метод, вы должны Применение:

let cell = tableView.dequeueReusableCellWithIdentifier("test", forIndexPath: indexPath) as UITableViewCell 

Таким образом, в конце концов ваш код должен выглядеть следующим образом:

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { 
    let cell = tableView.dequeueReusableCellWithIdentifier("test", forIndexPath: indexPath) as UITableViewCell 
    cell.textLabel?.text = "test" 
    return cell 
} 
+0

Эта ошибка: '()?' не конвертируется в UITableViewCell. – 4thSpace

+0

Это потому, что вы возвращаете текст, вы должны вернуть свою ячейку после того, как вы установите текст. Я отредактировал свой ответ. – chrissukhram

2

Предполагается, что вы должны вернуть ячейку, а не текст из cellForRowAtIndexPath. Вы также должны использовать dequeueReusableCellWithIdentifier, чтобы получить свою ячейку.

override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { 
    var cell = tableView.dequeueReusableCellWithIdentifier("test") as UITableViewCell! 
    cell.textLabel?.text = "test" 
    return cell 
} 
Смежные вопросы