如何从Apple的例子中实际实现分页​​UIScrollView?

时间:2010-09-16 04:12:13

标签: iphone uiscrollview ios delegation

我在Apple的开发人员文档中找到了一个分页UIScrollView的示例,这正是我想要的应用程序。我有一个带有“帮助”按钮的主视图,我想呈现一个用户可以翻阅以查看所有帮助主题的视图。样本位于:

https://developer.apple.com/library/ios/#documentation/WindowsViews/Conceptual/UIScrollView_pg/ScrollViewPagingMode/ScrollViewPagingMode.html%23//apple_ref/doc/uid/TP40008179-CH3-SW1

它的工作方式与宣传的一样,但是,正如许多Apple的例子一样,他们在AppDelegate中执行各种代码。我有自己的AppDelegate,但我有一个NavigationController,其中RootView上有“帮助”按钮。我似乎无法将示例代码集成到我自己的代码中并使其工作。我很确定我不能将他们所拥有的代码放在我自己的AppDelegate中,但是如何设置它会使我失望。

有人能指出我做他正在谈论的事情的例子吗?

编辑:通过将所有AppDelegate方法移动到模板提供的UIViewController并创建新的ContentPage,我能够创建一个新项目并让它像Apple一样工作UIViewController保留内容。它可以在页面之间滚动,所以我想我可以将这段代码插入我的其他项目中。

我将applicationDidFinishLaunching替换为等效的viewDidLoad,并删除了处理AppDelegate等的window内容。然后我更改了Apple的initWithPageNumber:方法以引用我的帮助页面,而不仅仅是创建其通用视图的实例。

- (id)initWithPageNumber:(int)page {
    NSLog(@"--initWithPageNumber:ContentPage");
    if (self = [super initWithNibName:[NSString stringWithFormat:@"HelpPage%d", page] bundle:nil]) {
        pageNumber = page;
    }
    return self;
}

感谢您的帮助 - 有时候有人告诉您可以继续这样做,这很好!

1 个答案:

答案 0 :(得分:1)

在示例代码中,applicationDidFinishLaunching:方法设置UIScrollView(以及UIPageControl,但暂时忽略它,然后“加载”前两页。 “加载”页面包括将该页面的视图控制器加载到内存中并进行缓存。然后,根据它的“页码”,它将控制器的视图作为子视图添加到UIScrollView偏移量,并使用适当的x。您应该可以在viewDidLoad中完成所有操作。

如果在显示视图控制器的视图时有空白视图,则表示尚未将子视图正确添加到UIScrollView。根据您更改的具体情况,可能是(a)未正确设置x偏移,(b)未正确设置框架,或(c)未正确添加为子视图的某种组合。

如果你发布一些自己的代码,我们可能会对这个问题有所了解。