设置多个tableviewcell布局的最佳方法

时间:2015-11-23 01:10:05

标签: swift

我正在创建一个新的tableviewcontroller但是,我需要这个动态的方式,每个单元格的布局可能会改变。

我的意思是我正在从JSON解析新闻。每个新闻项目可以有3种类型:帖子,成就,公告。这些类型中的每一种都包含不同的信息。帖子将有标题,日期,图像和标签。公告将具有相同但包括重要性标签。成就将包括用户名,图像,日期,个人资料图片,社交分享。

新闻列表页面将显示所有项目,但按日期排序,但每种类型的布局完全不同。

我已经开始并成功完成了以下工作:

override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {

    if(indexPath.row == 0)
    {
        let cell: NewsPostTableViewCell = tableView.dequeueReusableCellWithIdentifier("newsPostTableCell") as! NewsPostTableViewCell
        return cell
    }
    else
    {
        let cell: AchievementCardTableViewCell = tableView.dequeueReusableCellWithIdentifier("achievementCardTableCell") as! AchievementCardTableViewCell
        return cell
    }
}

显示2个不同的布局但我开始思考,我将如何在cellForRowAtIndexPath中确定要应用的布局?基本上在JSON响应中会有一个模板标识符来通知应用程序要应用哪个模板,但是如果可能的话,我们就不知道如何应用这个模板。

最好为每个布局创建3个不同的视图控制器1并嵌入它们吗?

1 个答案:

答案 0 :(得分:0)

根据您解析JSON的方式,您可以将单元格类型存储到数组中。然后当你使用indexPath.row根据它找到的类型查看数组时,你可以执行一个Switch。