2

(我在这里的第一个问题;)

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

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

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

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

现在我的 DetailView 是 UIView 的子类,它可以工作。但我不希望这个 DetailView 中的按钮操作有很多委托。我宁愿让 DetailView 处理它们。所以我想从 UIViewController 继承我的 DetailView。但是我们有一个巨大的空滚动视图,带有 3 个 UIViewControllers(一次只显示 1 个)。但也许苹果对此并不热衷,或者我可能会遇到麻烦。

所以我的问题归结为:

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

提前感谢您的帮助,G

4

3 回答 3

1

虽然理论上一个 UIScrollView 可以包含 3 个不同 UIViewController 的 UIView,但这不一定是您尝试完成的最佳实践。

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

于 2012-05-30T00:17:00.120 回答
0

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

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

myScrollView.addSubView(viewName).

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

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

更多信息可以在这里找到

于 2012-05-30T00:02:15.150 回答
0

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

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

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

于 2012-05-30T00:06:31.153 回答