我将通过说明我在我的应用程序中尝试做的事情来开始我的问题:
我正在尝试构建一个文档“选择器”屏幕,类似于 iPad 上的 Pages 或 Numbers,看起来像这样:
我想要一个UIScrollView
可以放入子视图的;这些子视图上可能有控件,例如 Pages/Numbers 中的日期/名称“排序”分段控件,或者它们可能是文档的图像。子视图显示什么并不重要 - 我希望子视图成为带有 backing 的视图UIViewControllers
。这就是我的困惑开始的地方。
看,我最初尝试使用UITableView
. 由于超出此问题范围的各种原因,这没有解决。作为这项工作的一部分,我UITableViewCell
按照本教程(在 iOS 4 中创建自定义 UITableViewCell)创建了子类(和随附的 XIB)。我心想,这太棒了 - 我有可以在 a 中显示的视图UITableView
,并且有办法以这样的方式从这些视图中获取事件(sortTypeChanged
响应我的 Date/Name 分段控件中的选择更改) :
@interface DocSortViewController : UITableViewCell {
}
-(IBAction)sortTypeChanged:(id)sender;
@end
这一切都很好——直到我意识到UITableView
不会得到我想要的东西。所以我放弃了它,转而支持UIScrollVIew
. 然而,这是我目前的知识让我失望的地方。自定义的“使用视图控制器/XIB 视图”范例UITableViewCells
似乎不适用于UIScrollViews
.
我无法弄清楚如何创建一个单独的视图控制器和随附的 XIB,我可以在我的UIScrollView
. 尝试通过加载 XIBUINib.instantiateWithOwner
并将视图控制器的view
属性添加为子视图崩溃。我不确定为什么。
不过,让我担心的是,我似乎从根本上误解了视图控制器/视图的工作方式。尤其是与UIScrollViews
.
我错过了什么?有没有人试图做类似的事情?是否有推荐的最佳实践?如果您不应该将视图控制器/XIB 加载到UIScrollViews
中,那么您应该怎么做呢?您将如何从驻留在子视图上的控件获取事件UIScrollView
?
编辑:我应该补充一点,我的问题的一部分是我正在通过 WPF 的镜头来看待这个问题,在这种情况下,使用 MVVM 模式,您可以通过将较小的视图组合成一个完整的视图,每个视图都有自己的支持视图模型。在 iOS 中复制它是否现实?还是真的不推荐?