(我的第一个问题;)
我正在尝试实现您可以在邮件中看到的功能:其中有一个向上按下按钮来加载上一封邮件或下一封邮件。
在我的情况下,我有一个包含大约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并不热衷于此,或者我可能会以某种方式遇到麻烦。
所以我的问题归结为:
提前感谢您的帮助, ģ
答案 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将其视图更改为新内容。