在UIScrollView中有多个UIViewControllers可以吗?

时间:2012-05-29 23:41:57

标签: iphone uiscrollview

(我的第一个问题;)

我正在尝试实现您可以在邮件中看到的功能:其中有一个向上按下按钮来加载上一封邮件或下一封邮件。

在我的情况下,我有一个包含大约100个条目的UITableView,如果选择一行,则会加载一个巨大的空UIScrollView。并显示在加载DetailView的右侧偏移处。在这个巨大的scrollview(启用分页)中,每个页面都是屏幕的大小。 DetailView包含一个UIScrollview,其中显示内容(文本)和一些按钮(邮件,safari中的打开链接等)。

我使用一个使用NSSet的(DetailView *)dequeueRecycledPage方法,因此最多有3个UIViewControllers存活。 (当前,上一个,下一个)。为了快速响应。

导航栏中的按钮会将巨大的滚动视图告诉“scrollRectToVisible:animated:YES”,以便用户看到新的视图幻灯片。

现在我的DetailView是UIView的子类,它可以工作。但是我不希望在这个DetailView中对按钮操作进行大量授权。我宁愿让DetailView处理它们。 所以我想从UIViewController继承我的DetailView。 但是后来我们有了3个UIViewControllers的巨大空滚动视图(一次只显示1个)。但也许Apple并不热衷于此,或者我可能会以某种方式遇到麻烦。

所以我的问题归结为:

  • UIScrollView是否可以包含多个UIViewControllers(一次只显示1个) 或者这是“未完成”还是完全错误?

提前感谢您的帮助, ģ

3 个答案:

答案 0 :(得分:1)

虽然理论上一个UIScrollView可以包含3个不同的UIViewControllers的UIViews,但它不一定是你想要完成的最佳实践。

通常,更好的设计是让您的UIScrollView属于UIViewController,然后您可以向UIScrollView添加任何UIViews(或其子类)。您可以简单地创建3个不同的UIView并将这些视图添加到UIScrollView中,而不是创建3个不同的UIViewControllers并将其视图添加到UIScrollView。

答案 1 :(得分:0)

我知道你可以在一个滚动视图中拥有两个(因此多个)视图,我工作的公司已经完成了几次。

我不确定具体代码是什么,但你可能想要这样的东西:

myScrollView.addSubView(viewName).

要隐藏视图,请执行以下操作:

if (logicToHideViewIsTrue) {
    [viewName setHidden:YES];
 }

可以找到更多信息here

答案 2 :(得分:0)

通常,UIViewController包含整个屏幕,一次只能显示一个。实现Mail应用程序视图的方法涉及UINavigationController,UIViewController和UIScrollView。

UIViewController应该将向上/向下按钮添加到导航工具栏。

UIViewController有一个应该是UIScrollView的视图。当按下向上/向下按钮时,UIViewController应该收到此消息,然后告诉UIScrollView将其视图更改为新内容。