如何使用Profile Img制作可扩展的TableView?

时间:2015-08-05 03:04:59

标签: ios objective-c swift

我试图使用SWRevealViewController创建一个Slide side out菜单,但是我无法使用image + Hello,Name ...来扩展TableView和配置文件...

what i need

我所能做的就是:

what i already done

基本上如何制作可扩展的TableView和配置文件。

有没有如何做到这一点的例子?

2 个答案:

答案 0 :(得分:5)

据我所知,你想要一个可扩展的表格视图,点击表格中的一行,会出现更多选项。

我过去使用以下方法实现了这一目标:

func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {

    if let cell = tableView.cellForRowAtIndexPath(indexPath) as? OuterCell{

        if let object = data[indexPath.row] as? OuterObject{
            if(object.open == false){
                data.insert(InnerObject(content: object.innerContent), atIndex: indexPath.row + 1)
                tableView.beginUpdates()
                tableView.insertRowsAtIndexPaths([NSIndexPath(forRow: indexPath.row + 1, inSection: 0)], withRowAnimation: .Left)
                tableView.endUpdates()
            }else{
                data.removeAtIndex(indexPath.row + 1)
                tableView.beginUpdates()
                tableView.deleteRowsAtIndexPaths([NSIndexPath(forRow: indexPath.row + 1, inSection: 0)], withRowAnimation: .Left)
                tableView.endUpdates()
            }
            object.open = !object.open
        }
    }
}

基本上这里发生的是TableView的dataSource由此示例中的data数组表示。这是您连接到所有TableViewDelegate挂钩的内容。

在数据数组中,我持有两种类型的对象: OuterObject InnerObject

OuterObject 包含它包含的内部对象的所有信息,如果单击它,它将动态地将其子项添加到数据数组中。

示例数据(我使用JSON导致其易于阅读和理解,您必须迅速代表这一点)

[
{
  name="Ensino",
  type="outerObject",
  open=true
  childObjects=[
    {
      name="Servico",
      type="innerObject"
    },
    {
      name="Avaliacao",
      type="innerObject"
    }
  ]
},
{
  name="Pesquisa",
  type="outerObject",
  open=false
  childObjects=[]
}
]

所以在你的情况下,你需要一个" Ensino"对象,带有包含以下数据的子属性:Avaliaco,Servicos等等......

外部对象还保持状态,无论它是打开还是关闭,如果再次单击它,就可以知道删除属于它的所有内部对象。

在这个例子中,我已经将OuterObject硬编码为总是最多只有一个子节点,你必须修改代码才能更聪明地根据有多少个子对象在外部插入/删除时插入/删除多少个对象你点击的对象有。

通过调用tableView.beginUpdates()tableView.beginUpdates()tableView.insertRowsAtIndexPaths(),您将访问允许在更新数据时进行动画转换的方法。

解决这个问题的关键是创建一个智能数据源,然后利用Apple在UITableView中实现的方法来实现它。

如果您需要更多帮助,请与我们联系,这是一个高级TableView主题。

答案 1 :(得分:1)

检查此示例代码dropdown menu

这可能会给你一些想法。