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