我尝试使用swift为iOS 8制作应用。这里的目标是制作一种新闻源。此Feed会显示来自用户的帖子,这些帖子遵循特定模式。
我想过使用UITableView,其中每个单元格都遵循自定义布局。当我尝试访问其中的文本标签时出现问题。我尝试通过其标签访问它,但是当我这样做时,整个应用程序崩溃了。报告的错误是"Swift dynamic cast failed"
,我使用以下代码访问该视图:
override func tableView(tableView: UITableView!, cellForRowAtIndexPath indexPath: NSIndexPath!) -> UITableViewCell! {
let cellId: String = "cell"
var cell : UITableViewCell = tableView.dequeueReusableCellWithIdentifier(cellId) as UITableViewCell
if let ip = indexPath{
cell.textLabel.text = myData[ip.row] as String
var lbl = cell.contentView.viewWithTag(0) as UILabel
lbl.text = "ola"
}
return cell
}
我做错了吗?提前谢谢!
答案 0 :(得分:9)
我认为问题是标记0.所有视图都是默认值0.所以尝试另一个标记值。
答案 1 :(得分:2)
刚遇到同样的问题。解决方案是将标签更改为10和20.我之前使用过1和2。有人知道系统使用的一系列标签吗?
所以我的' cellForRowAtIndexPath'对于带有图像和每行标签的表,现在看起来像这样:
internal func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
if let cell = tableView.dequeueReusableCellWithIdentifier("cellIdentifier") as? UITableViewCell {
(cell.contentView.viewWithTag(10) as UIImageView).image = IMAGES[indexPath.row]
(cell.contentView.viewWithTag(20) as UILabel).text = LABELS[indexPath.row]
return cell
} else {
NSLog("Prototype did not work")
return UITableViewCell(style: UITableViewCellStyle.Default, reuseIdentifier: "errorIdentifier")
}
}
答案 2 :(得分:0)
将0更改为1或其他标签,它对我有用。
0与另一个单元格标签的标签重叠。