fhefh
V2EX  ›  iOS

[咨询]iOS 中 tableView 管理的问题

  •  
  •   fhefh · Feb 16, 2016 · 3614 views
    This topic created in 3738 days ago, the information mentioned may be changed or developed.

    比如有这么一个需求

    要做一个展示商品页面:
    第一行图片
    第二行商品介绍
    第三行展示评价

    代码:
    在 tableView 的 dataSource 和 delegate 方法里面直接 if/else 判断:
    if (index == 0) {
    //图片
    } else if (index == 1) {
    //商品介绍
    } else if (index == 2) {
    //评价
    }

    请教一下有木有好点方法

    11 replies    2016-02-17 15:19:35 +08:00
    fengzeyan
        1
    fengzeyan  
       Feb 16, 2016
    Scrollview 好了。。
    vincentxue
        2
    vincentxue  
       Feb 16, 2016
    创建了一个类作为 model, 每个类实例代表了一条 data. 每次只需要创建若干这个类实例, cell 接收类实例传入, 展示的时候直接展示就好.

    这个类的内容根据你的需求不同而不同.
    loveuqian
        3
    loveuqian  
       Feb 16, 2016
    cell 接收 data
    重写 data 的 set 方法,在里面搞事
    doluvor
        4
    doluvor  
       Feb 16, 2016
    你的 tableView 的每个 cell 应该有对应 viewModel 。 viewModel 里面应该有 cell 的类型,当然更好的设计是不同的 cell 类型应该实现不同的 protocol ,通过 viewModel 的类型来生成不同的 cell 。
    jjgod
        5
    jjgod  
       Feb 16, 2016
    你的需求用 UIStackView 就行,不需要 Table View 。
    ameba
        6
    ameba  
       Feb 16, 2016
    换 UIStackView 吧
    nathanw
        7
    nathanw  
       Feb 16, 2016
    用 2 楼的方法,自定义 model ,
    然后在 dataSource 和 delegate 里面,根据 model 类型判断,而不是 indexPath
    zjmdp
        8
    zjmdp  
       Feb 16, 2016
    没有人建议用不同的 section 来处理这些异构的 model 么?
    3 个 section ,直接判断 indexPath.section 来处理图片,商品介绍和评价
    zjmdp
        9
    zjmdp  
       Feb 16, 2016
    @jjgod iOS 9 的特性,一般 app 至少也要支持到 iOS 8 吧
    c447279704
        10
    c447279704  
       Feb 16, 2016
    三个 cell ,作为 datasource 的属性,三个 cell 放到一个数组,直接把 index.section 作为 index 从数组中取 cell 即可
    bullettrain1433
        11
    bullettrain1433  
       Feb 17, 2016
    @zjmdp fdstackview 支持 ios6 还是 ios7 来的
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   3888 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 70ms · UTC 04:37 · PVG 12:37 · LAX 21:37 · JFK 00:37
    ♥ Do have faith in what you're doing.