使用2个不同的原型单元数据加载表视图

时间:2019-05-30 02:05:57

标签: ios swift uitableview tableview

我试图在不同的时间用不同的原型单元填充tableView。问题是let cell = tableView.dequeueReusableCell(withIdentifier: "MeArticlesCell") as? MeArticlesCell else {return UITableViewCell()}之后的任何代码都没有被调用,我不知道为什么。我返回的行数正确。

 func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {

    if(postsSelected){
        guard let cell = tableView.dequeueReusableCell(withIdentifier: "messageCell") as? feedMessagesCell else {return UITableViewCell()}
        //the code in this part loads posts fine

    } else {
        guard let cell = tableView.dequeueReusableCell(withIdentifier: "messageCell") as? feedMessagesCell else {return UITableViewCell()}
        //this part never gets called 
    }
}        

2 个答案:

答案 0 :(得分:0)

基本上,您的guard语句失败并进入else部分。

    guard let cell = tableView.dequeueReusableCell(withIdentifier: "messageCell") as? feedMessagesCell else { // this fails 
       // enters here
       return UITableViewCell()
       // exist the function - nothing will be run after
    }

我的猜测是它无法以feedMessagesCell的形式广播它,因此tableView.dequeueReusableCell(withIdentifier: "messageCell") as? feedMessagesCell使cell为零(然后输入{{1 }}部分)

答案 1 :(得分:0)

您正在使用dequeueReusableCell(withIdentifier:)方法初始化单元格,如果找不到任何可重复使用的单元格,则该单元格将返回nilMore here

  

具有关联标识符的UITableViewCell对象,如果没有则为nil   这样的对象存在于可重用单元队列中。

如果找不到任何可重复使用的单元格,则应使用dequeueReusableCell(withIdentifier:for:)来初始化一个新单元格。 More here

  

具有关联的重用标识符的UITableViewCell对象。这个   方法始终返回有效的单元格。