tableview

时间:2015-10-05 12:27:43

标签: ios swift uitableview

我有一个带有2个不同自定义单元格的tableview,它们都有自己独特的单元格可重用标识符。我需要这些每个都有不同的高度。我的cellForRowAtIndexPath看起来像这样:

  //3
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath, object: PFObject!) -> PFTableViewCell? {

   let PostObject = object as! Post

    if PostObject["fichierimage"] as? PFFile == nil {

        let cell2 = tableView.dequeueReusableCellWithIdentifier("cell10", forIndexPath: indexPath) as! cell0Entry

        return cell2

    }
    else {

    let cell = tableView.dequeueReusableCellWithIdentifier("cell9", forIndexPath: indexPath) as! cell4

        return cell

    }

}

这可以将所有数据正确加载到tableview中。但是两个单元格的高度保持在481,而第一个单元格的高度应该是99.我在故事板中将其高度设置为99但我认为tableView行高度超过了它。我在heightForRowAtIndexPath中尝试了这个,但它没有用,它会抛出错误并导致应用崩溃:

 override func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat {

    let object1 = objectAtIndexPath(indexPath)
    let object2 = object1 as! Post


    // this next line throws the error
    if object2["fichierimage"] as? PFFile == nil {
        return 99
    }
    else {
        return 481
    }
}

错误消息显示:

  

由于未捕获的异常'NSRangeException'而终止应用,        原因:'*** - [__ NSArrayM objectAtIndex:]:索引2超出界限[0 .. 1]

1 个答案:

答案 0 :(得分:0)

修改

// this next line throws the error
if object2["fichierimage"] as? PFFile == nil {
    return 99
}
else {
    return 481
}

对此:

if let _ = object2["fichierimage"] as? PFFile {
    return 99
}
else {
    return 481
}

告诉我它是否有效