如何在 UITableView 中使用多个自定义单元格(>1)

How to use multiple custom cells (>1) in UITableView

我在整个 Stack Overflow 上搜索了这个问题的答案并找到了一些有用的答案,但我的情况有所不同,因为该部分中的行数要根据列在大批。我正在尝试创建一个使用两个自定义单元格的 table。第一个单元格显示个人资料信息,而第二个单元格显示新闻提要。

 func numberOfSectionsInTableView(tableView: UITableView) -> Int {
    return 1
}

func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    return myProfileDM.profileArray.count
    //return myProfileFeedDM.profileFeedArray.count
}


func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) ->
    UITableViewCell {
        if indexPath.row == 0 {
            let cell = tableView.dequeueReusableCellWithIdentifier("bio", forIndexPath:indexPath) as! ProfileTableViewCell

            cell.followerNumber!.text = myProfileDM.profileArray[indexPath.row].followerNumberInterface
            cell.followers!.text = myProfileDM.profileArray[indexPath.row].followersInterface
            cell.following!.text = myProfileDM.profileArray[indexPath.row].followingInterface
            cell.followingNumber!.text = myProfileDM.profileArray[indexPath.row].followingNumberInterface

        return cell
        }
        else{
            let cell = tableView.dequeueReusableCellWithIdentifier("feed", forIndexPath:indexPath) as! FeedTableViewCell

            //let cell: FeedTableViewCell = UITableViewCell(style: UITableViewCellStyle.default, reuseIdentifier: "feed")
            cell.profileFeedLabel!.text = myProfileFeedDM.profileFeedArray[indexPath.row].profileFeed
            cell.profileDateLabel!.text = myProfileFeedDM.profileFeedArray[indexPath.row].profileDate

        return cell
        }


}


}

当我 运行 程序时,第一个单元格(带有标识符 bio)是唯一 loads/shows 向上的单元格。

我想该部分的行数有误。从你的变量名我怀疑它应该是

myProfileFeedDM.profileFeedArray.count + 1

请注意,在提要数组中,您必须使用 indexPath.row - 1 才能找到数组的正确索引,因为第一行是个人资料。

我没有从代码中看出它不起作用的任何原因。 尝试调试 cellForRowAtIndexPath 方法以查看每次调用时 indexPath 的值是多少 (或者只是将 println ("IndexPath: \(indexPath)") 放入您的 cellForIndexPath 方法)

PS:但只要您只需要一次个人资料单元格 - 我建议将 ProfileCell 移动到 table 或部分 header 我认为这会更合乎逻辑。