代码之家  ›  专栏  ›  技术社区  ›  nrj

可安装视图-在两个数据源之间切换

  •  1
  • nrj  · 技术社区  · 15 年前

    我有一个小的Cocoa应用程序,用户界面主要由一个独立的视图组成。但是,我有两个不同的数据列表,我想在其中显示,然后在这两个列表之间切换。我的问题是,你认为什么是实现这一目标的最佳方法?

    现在我想我可以使用bool标志来更改在数据源方法中使用的数组。但我还需要更改使用的nscell类,因为列表包含完全不同的数据对象。然后我需要重新加载表(table reloaddata会可靠地重新加载所有这些吗?).

    或者,我可以在NIB文件中创建两个独立的不稳定视图,并切换它们的可见性…但这似乎有点陈词滥调。

    我对可可有很好的理解,但我不确定如何搜索类似的东西,我很好奇其他更有经验的开发者会如何解决这个问题。

    谢谢。

    3 回复  |  直到 15 年前
        1
  •  1
  •   Rob Keniger    15 年前

    或者,我可以在NIB文件中创建两个独立的不稳定视图,并切换它们的可见性…但这似乎有点陈词滥调。

    一点也不刻薄。对多组不同的数据使用同一个表视图是很不礼貌的。

    只需创建一个表格 NSTabView 有两个标签,放一个 NSTableView 在第一个选项卡和另一个选项卡中 非稳定视图 在第二个选项卡中。然后可以通过调用 -selectTabViewItemAtIndex: 纳斯塔维尤 .

        2
  •  0
  •   Sixten Otto    15 年前

    为什么不单独实现 UITableViewDataSource UITableViewDelegate 然后改变 UITableView 指向切换事件发生的时间?似乎它比在一个实现中包含所有条件代码要干净得多。因为大多数例子都显示 UITableViewController 实现这两种协议并不意味着它们不能是三个独立的对象。

        3
  •  -1
  •   Kenny Winker    15 年前

    西顿·奥托的回答是对的。也就是说,如果我只是想把有用的东西拼凑起来,我可能会这样做:

    - (UITableViewCell *)cellForRowAtIndexPath:(NSIndexPath *)indexPath {
      if (dataSourceOne) {
        [self cellForRowAtIndexPathDS1:indexPath];
      }
      else {
        [self cellForRowAtIndexPathDS2:indexPath];
      }
    }
    

    然后实现两个版本的cellForRowatindexPath。我很确定重新加载数据方法会重新加载屏幕上的所有内容。

    粗线条,但可行。