如何实现一个 三层的 动态数据展示

chilli6519 2014-09-24 10:43:43

类似于一个树形吧, he qq的联系人那个类似,但需要三层, 每一层的数据个数都不确定,

请问该用什么实现 , 如果用tableview 是用多个吗? 如果是多个, 数据的数量不确定,如何做到自动向下展开高度?

谢谢
大致的画了一个目标

...全文
210 21 打赏 收藏 转发到动态 举报
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
chilli6519 2014-09-28
  • 打赏
  • 举报
回复
引用 16 楼 zhangao0086 的回复:
你是点击cell加载第二层还是点击cell上的一个button?
没有加任何东西,也不知道如何加 , 希望直接点击 section 即可
Bannings 2014-09-28
  • 打赏
  • 举报
回复
引用 15 楼 chilli6519 的回复:
[quote=引用 14 楼 zhangao0086 的回复:] 用tableView更好,第一层就是每个section返回一行cell(供点击显示第二层数据),点击显示第二层的时候,加载第二层的数据,reload这个section,并返回第二层数据count + 1行cell
就是 一直实现不了这个 , 第一层section 显示没有问题 , : 现在不能通过 section 点击 后加载 下面的第二层数据 , 没有找到 点击 section 的事件 [/quote] 你是点击cell加载第二层还是点击cell上的一个button?
chilli6519 2014-09-28
  • 打赏
  • 举报
回复
引用 14 楼 zhangao0086 的回复:
用tableView更好,第一层就是每个section返回一行cell(供点击显示第二层数据),点击显示第二层的时候,加载第二层的数据,reload这个section,并返回第二层数据count + 1行cell
就是 一直实现不了这个 , 第一层section 显示没有问题 , : 现在不能通过 section 点击 后加载 下面的第二层数据 , 没有找到 点击 section 的事件
Bannings 2014-09-28
  • 打赏
  • 举报
回复
引用 13 楼 chilli6519 的回复:
我本来在犹豫是用 tableview 还是 scrollview , 但由于 不知道 每个 第一层下面又多少数据行,而且点击的顺序也不确定,所以不好确定 在scrollview 第一层下面的大小, 这种 两层 用 scrollview 合适 还是 tableview 合适 ?
用tableView更好,第一层就是每个section返回一行cell(供点击显示第二层数据),点击显示第二层的时候,加载第二层的数据,reload这个section,并返回第二层数据count + 1行cell
chilli6519 2014-09-28
  • 打赏
  • 举报
回复
我本来在犹豫是用 tableview 还是 scrollview , 但由于 不知道 每个 第一层下面又多少数据行,而且点击的顺序也不确定,所以不好确定 在scrollview 第一层下面的大小, 这种 两层 用 scrollview 合适 还是 tableview 合适 ?
chilli6519 2014-09-28
  • 打赏
  • 举报
回复
引用 11 楼 zhangao0086 的回复:
[在cell上还是cell的contentView上,得到cell的之后,用indexPathForCelll就能取到indexPath了
我需要实现的是这样, 首先加载 第一批数据 , 把他显示在section 上面 让后通过点击 section 就再去加载 这个section 下面对应的数据 并且添加到 section 下面的行 就类似动态实现一个 section 下面的数据添加 谢谢
Bannings 2014-09-28
  • 打赏
  • 举报
回复
引用 10 楼 chilli6519 的回复:
[quote=引用 5 楼 zhangao0086 的回复:] 不能一次把数据全部加载到tableView中,要动态加载。 只有当点击cell的时候,才判断是否要把数据insert(或delete)出来,所以像insertRowsAtIndexPaths这些方法并不是智能的,而是需要自己去控制,如果一次全加到tableView上,就等于全部显示了
抱歉, 怎么样才能获取到, 点击的是那个section ? 并且得到 对应的section 值[/quote] 点击事件在一个Button上面吗?获取button的superview就行了,或者是button的superview.superview,这取决于你的button是添加在cell上还是cell的contentView上,得到cell的之后,用indexPathForCelll就能取到indexPath了
chilli6519 2014-09-28
  • 打赏
  • 举报
回复
引用 5 楼 zhangao0086 的回复:
不能一次把数据全部加载到tableView中,要动态加载。 只有当点击cell的时候,才判断是否要把数据insert(或delete)出来,所以像insertRowsAtIndexPaths这些方法并不是智能的,而是需要自己去控制,如果一次全加到tableView上,就等于全部显示了
抱歉, 怎么样才能获取到, 点击的是那个section ? 并且得到 对应的section 值
Bannings 2014-09-28
  • 打赏
  • 举报
回复
引用 20 楼 chilli6519 的回复:
[quote=引用 18 楼 zhangao0086 的回复:] 那你实现didSelectRowAtIndexPath这个delegate方法不就好了?
我吧第一层的数据这样赋值了

    func tableView(tableView: UITableView, titleForHeaderInSection section: Int) -> String? {
        if(self.dataClass.count > 0)
        {
            return self.dataClass[section]["ClassName"] as? String;
        }
        return "";
    }
[/quote] section是不能点击的,用cell,做个假的section title
chilli6519 2014-09-28
  • 打赏
  • 举报
回复
引用 18 楼 zhangao0086 的回复:
那你实现didSelectRowAtIndexPath这个delegate方法不就好了?
我吧第一层的数据这样赋值了

    func tableView(tableView: UITableView, titleForHeaderInSection section: Int) -> String? {
        if(self.dataClass.count > 0)
        {
            return self.dataClass[section]["ClassName"] as? String;
        }
        return "";
    }
chilli6519 2014-09-28
  • 打赏
  • 举报
回复
引用 18 楼 zhangao0086 的回复:
那你实现didSelectRowAtIndexPath这个delegate方法不就好了?
我把第一层 赋值给了 section , 点击section 的时候没有反应的啊
Bannings 2014-09-28
  • 打赏
  • 举报
回复
引用 17 楼 chilli6519 的回复:
[quote=引用 16 楼 zhangao0086 的回复:] 你是点击cell加载第二层还是点击cell上的一个button?
没有加任何东西,也不知道如何加 , 希望直接点击 section 即可 [/quote] 那你实现didSelectRowAtIndexPath这个delegate方法不就好了?
Bannings 2014-09-24
  • 打赏
  • 举报
回复
indentationLevel是UITableViweCell的属性,表示缩进级别,你可以试着把它设为1、2、3,效果其实很明显。 无法push是什么意思?运行时报错? 另外在storyboard中关联cell和detail页面也没问题,你知道当push一个页面的时候会调用VC的prepareForSegue方法,那么如果你不想push某些cell,则可以重写VC的shouldPerformSegueWithIdentifier方法
chilli6519 2014-09-24
  • 打赏
  • 举报
回复
引用 1 楼 zhangao0086 的回复:
这个就用TableView,而且用Group或者Plain都可以。 你的数据源应该已经是三层结构的了,TableView先显示第一层(返回数据源第一层的数量),点击第一层的数据显示第二层的时候,用tableView的insertRowsAtIndexPaths方法,关闭时就调deleteRowsAtIndexPaths方法,第三层也类似,你可以用三个Identifier来分别对应三种Cell的显示方式
谢谢,因为显示的信息不多,也不复杂, 是否意味可以用tableview 缺省的那种 cell 在同一个cell里面,我如何区分是哪一层被点击了呢?
chilli6519 2014-09-24
  • 打赏
  • 举报
回复
另外每一层的数据都是通过不同的方法从数据库中获取到的 第二层的数据是根据第一层的数据结果获取 第三层的是根据第二层的数据结果获取 最后, 第三层数据还能够接受比如 点击 事件 , 并能够得到其对应的数据,好传入下一个页面 谢谢
Bannings 2014-09-24
  • 打赏
  • 举报
回复
这个就用TableView,而且用Group或者Plain都可以。 你的数据源应该已经是三层结构的了,TableView先显示第一层(返回数据源第一层的数量),点击第一层的数据显示第二层的时候,用tableView的insertRowsAtIndexPaths方法,关闭时就调deleteRowsAtIndexPaths方法,第三层也类似,你可以用三个Identifier来分别对应三种Cell的显示方式
chilli6519 2014-09-24
  • 打赏
  • 举报
回复
引用 7 楼 zhangao0086 的回复:
如果是这样就简单多了,也不需要在数据源里分三层,一层就行了,用level来分层,tableView直接显示全部,系统的cell有一个indent属性,可以达到缩进效果;点击的话在didSelect回调或者是willSelect中处理,直接判断level是不是第三层就行了。
我没有查到 indent 这个怎么用,怎么让下面的文字能够 缩进, 另外, 我在storyboard 中把cell 和 detail页面关联可以用,但无法禁止 其他层的选择, 如果我在代码中用 var lecturedetail = MyLectureController(); self.navigationController?.pushViewController(lecturedetail, animated: true); 这是类定义 class MyLectureController: UICollectionViewController { 出现错误,无法push
Bannings 2014-09-24
  • 打赏
  • 举报
回复
引用 6 楼 chilli6519 的回复:
[quote=引用 5 楼 zhangao0086 的回复:] 不能一次把数据全部加载到tableView中,要动态加载。 只有当点击cell的时候,才判断是否要把数据insert(或delete)出来,所以像insertRowsAtIndexPaths这些方法并不是智能的,而是需要自己去控制,如果一次全加到tableView上,就等于全部显示了
我实际上就是需要显示,但需要分层显示 , 而且只能是 第三层的才可以点击,其他上面的两层不能点击, 该如何让那些cell disabled 了呢 [/quote] 如果是这样就简单多了,也不需要在数据源里分三层,一层就行了,用level来分层,tableView直接显示全部,系统的cell有一个indent属性,可以达到缩进效果;点击的话在didSelect回调或者是willSelect中处理,直接判断level是不是第三层就行了。
chilli6519 2014-09-24
  • 打赏
  • 举报
回复
引用 5 楼 zhangao0086 的回复:
不能一次把数据全部加载到tableView中,要动态加载。 只有当点击cell的时候,才判断是否要把数据insert(或delete)出来,所以像insertRowsAtIndexPaths这些方法并不是智能的,而是需要自己去控制,如果一次全加到tableView上,就等于全部显示了
我实际上就是需要显示,但需要分层显示 , 而且只能是 第三层的才可以点击,其他上面的两层不能点击, 该如何让那些cell disabled 了呢
Bannings 2014-09-24
  • 打赏
  • 举报
回复
不能一次把数据全部加载到tableView中,要动态加载。 只有当点击cell的时候,才判断是否要把数据insert(或delete)出来,所以像insertRowsAtIndexPaths这些方法并不是智能的,而是需要自己去控制,如果一次全加到tableView上,就等于全部显示了
加载更多回复(1)

1,420

社区成员

发帖
与我相关
我的任务
社区描述
Swift,苹果于2014年WWDC(苹果开发者大会)发布的新开发语言,可与Objective-C共同运行于MAC OS和iOS平台,用于搭建基于苹果平台的应用程序。
swift 技术论坛(原bbs)
社区管理员
  • Swift
  • 网罗开发
  • 大熊猫侯佩
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧