viewWithTag对于UITableViewCell返回nil

3

我有一个带有原型UITableViewCell和标识符contactUITableView。在界面构建器中,我正确地构建了单元格,并将所有元素设置为正确的标记。当我尝试编辑单元格中具有标记101的UILabel时,使用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

在我的简单项目中它可以工作。尝试打印出你的 contact["name"] 看看里面有什么。你的联系人 println 工作吗? - Caroline
是的,它可以正确地打印输出。 - jamespick
你的 contact["name"] 打印出来没问题吗? - Caroline
我觉得这是一个iOS 8的bug。 - jamespick
只是确认一下:你的Storyboard中有TableView -> Cell -> Content View -> Label这个结构吗?而且你的Label的标签是101吗?我有这个结构并且它对我有效。在一个简单的新项目中尝试它,将“String”分配给标签而不是变量。在Swift和iOS 8中,这对我有效。 - Caroline
显示剩余5条评论
1个回答

6

试着使用这个

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

我尝试过这个,但它没有起作用。您能解释一下我使用的方法和那种方法之间的区别吗? - jamespick
等等,它在另一个我遇到问题的单元格上运行正常。很奇怪,不是吗? - jamespick
实际上,我正在使用(cell.viewWithTag(3) as! UILabel)。text =“一些文本..”,这非常有效。 - OhadM

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接