viewWithTag возвращает ноль для UITableViewCell

У меня есть UITableView с прототипом UITableViewCell с идентификатором contact. В построителе интерфейса я правильно построил ячейку и установил для всех элементов правильные теги. Когда я пытаюсь отредактировать UILabel в ячейке с тегом 101, используя cell.viewWithTag, метод возвращает nil. Кажется, это проблема только на iOS 8. Я использую раскадровки и Swift. Вот код в tableView:cellForRowAtIndexPath:

let contact = contacts[indexPath.row]
println("Contact: \(contact)")
cell = tableView.dequeueReusableCellWithIdentifier("contact") as UITableViewCell
(cell.contentView.viewWithTag(101) as UILabel).text = contact["name"]! as String

person jamespick    schedule 25.09.2014    source источник
comment
Могу я спросить, почему отрицательный голос?   -  person jamespick    schedule 25.09.2014
comment
Это работает для меня в простом проекте. Попробуйте распечатать свой contact["name"], чтобы посмотреть, что в нем. Ваш контакт println работает?   -  person Caroline    schedule 25.09.2014
comment
да, печатает правильно   -  person jamespick    schedule 25.09.2014
comment
А ваш contact["name"] печатает нормально?   -  person Caroline    schedule 25.09.2014
comment
Да, я также пытался распечатать описание ячейки viewWithTag без приведения его к UILabel, и оно все равно было нулевым.   -  person jamespick    schedule 25.09.2014
comment
Я чувствую, что это ошибка iOS 8   -  person jamespick    schedule 25.09.2014
comment
Просто проверяю: так у вас есть TableView -> Cell -> Content View -> Label в вашей раскадровке? А у вашего лейбла есть тег 101? У меня есть это, и это работает для меня. Попробуйте это в простом новом проекте, назначив метке строку вместо переменной. У меня это работает в Swift и iOS 8.   -  person Caroline    schedule 25.09.2014
comment
Да все это у меня есть. Что странно, так это то, что у меня тоже есть работающие клетки.   -  person jamespick    schedule 25.09.2014
comment
Я попробую создать новую ячейку с нуля и посмотрю, сработает ли это.   -  person jamespick    schedule 25.09.2014
comment
Вы можете опубликовать полный класс UITableView?   -  person Steve Rosenberg    schedule 25.09.2014


Ответы (1)


попробуй использовать это

let contact = contacts[indexPath.row]
println("Contact: \(contact)")
cell = tableView.dequeueReusableCellWithIdentifier("contact", forIndexPath: indexPath) as UITableViewCell
(cell.contentView.viewWithTag(101) as UILabel).text = contact["name"]! as String
person Erick Silva    schedule 25.09.2014
comment
Я пробовал это, и это не сработало. Не могли бы вы объяснить разницу между методом, который я использовал, и этим методом? - person jamespick; 27.09.2014
comment
Подождите, это только что сработало на другом сотовом, с которым у меня были проблемы. Странно да? - person jamespick; 27.09.2014
comment
На самом деле, я использую (cell.viewWithTag(3) as! UILabel).text = некоторый текст... который прекрасно работает. - person OhadM; 23.12.2015