【问题标题】:How to hande iOS MVC when there is a complex view hierarchy存在复杂视图层次结构时如何处理 iOS MVC
【发布时间】:2014-02-01 16:48:20
【问题描述】:

我正在创建一个具有以下视图层次结构的应用:

  • 主视图
    • 查看1
      • UI标签
      • UICollectionView
    • 查看2
      • UILabel
      • UIScrollView
        • UITableView
        • UITableView
      • 页面控件

这可能不是太复杂的视图层次结构,但目前我只有一个用于主视图的视图控制器。 View1 和 View2 是自定义视图。

View1 是 UICollectionView 的委托和数据源。

View2 有一个自定义 UIScrollView 并且是委托。这个自定义 UIScrollView 是 UITableView 的委托和数据源。

现在,由于我有两个 UITableViews 作为 UIScrollView 的页面,我正在修复它以撞到设计墙,这将无法正常工作。

我想问什么视图(包括 UICollectionView 和 UITableViews )应该有自己的 UIViewControllers ?

它们都同时出现在屏幕上(除了 UIScrollView 的不同页面)。

【问题讨论】:

    标签: ios iphone objective-c model-view-controller


    【解决方案1】:

    所有这些都可以在一个 UIViewController 内完成,实现 UIScrollViewDelegateUITableViewDatasourceUITableViewDelegateUICollectionViewDelegateUICollectionViewDataSource,但这会给你一个大文件,这将是复杂的维持。我建议调查ContainerViewControllers

    在您的场景中,我建议您为第一层的每个子视图创建一个视图控制器。如果您将这些视图控制器作为子视图控制器添加到您的 MainViewController,您应该能够跨视图进行通信......

    另外,请记住- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section 将指针传递给它要求您提供数据的表视图,因此如果您将委托方法传递的表视图指针与您的视图控制器属性进行比较,您应该能够解决两个表视图在一个委托和数据源中。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-12-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-08-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多