我的应用程序中有一个全屏UICollectionView。它水平滚动,每个单元格填充集合 View 的边界。集合 View 由UIViewController管理。

鉴于每个“页面”都相当复杂,因此每个页面本身由关联的UIViewController管理是有意义的。 iOS 5支持 View Controller 包含,因此在附加和分离 View 时,子 Controller 应接收适当的生命周期方法(例如viewWillAppear:等)。与 View 回收一起使用时效果如何?

从页面“1”滚动到“2”,将创建一个新 View (因为在触地期间两个屏幕可以同时显示在屏幕上)。从页面“2”移动到“3”,UICollectionView可以成功使页面“1”的 View 出队,但是现在发生了什么?我会像这样将 View 强制插入 View Controller 3吗?

id cell = [collectionView dequeueReusableCellWithReuseIdentifier:@"ident" forIndexPath:indexPath];
UIViewController *child_controller = [self controllerAtIndexPath:indexPath];
[child_controller setView:cell];
// ... and so on

这感觉不对。但是,在这种情况下,我无法想到正确地重用 View 的正确方法。我是否完全采取了错误的方法?

最佳答案

我不认为UICollectionView是执行任务的最佳选择。
就像rob mayoff所说:您可以使用UIPageViewController
另一个选项可以是将UIScrollView与3个 subview (上一个,当前,下一个)一起使用。而且,您将能够轻松管理其位置和滚动 View 偏移以实现所需的效果。
这在WWDC 2011 'Advanced Scrollview Techniques'中进行了描述。您可以从那里获取源代码。

关于ios - UICollectionView中的UIViewController,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17204945/

10-10 23:14
查看更多