How to actually implement the paging UIScrollView from Apple's example?
I found an example of a paging UIScrollView
in Apple's developer docs and it's just what I want for my application. I have a main vi开发者_运维知识库ew with a "Help" button that I want to present a view that users can page through to see all the help topics. The sample is at:
https://developer.apple.com/library/ios/#documentation/WindowsViews/Conceptual/UIScrollView_pg/ScrollViewPagingMode/ScrollViewPagingMode.html%23//apple_ref/doc/uid/TP40008179-CH3-SW1
And it works as advertised, but, as with so many of Apple's examples, they do all kinds of code right in the AppDelegate
. I have my own AppDelegate
, but then I have a NavigationController
with a RootView
that has this "Help" button on it. I can't seem to get the example code integrated into my own and have it work. I'm pretty sure I can't put the code they have in their AppDelegate
in my own, but how to set it up eludes me.
Can someone point me to an example where they do what I'm talking about?
EDIT: I was able to create a new project and get it to work like Apple's by moving all the AppDelegate
methods into the UIViewController
that the template supplied and creating a new ContentPage
UIViewController
to hold the content. It can scroll from page to page, so I think I can insert this code into my other project ok.
I replaced the applicationDidFinishLaunching
with an equivalent viewDidLoad
and got rid of the AppDelegate
stuff dealing with window
and such. Then I changed Apple's initWithPageNumber:
method to refer to my help pages rather than just creating instances of their generic views.
- (id)initWithPageNumber:(int)page {
NSLog(@"--initWithPageNumber:ContentPage");
if (self = [super initWithNibName:[NSString stringWithFormat:@"HelpPage%d", page] bundle:nil]) {
pageNumber = page;
}
return self;
}
Thanks for the help - sometimes it's good just to have someone tell you it can be done to keep going!
In the sample code, the applicationDidFinishLaunching:
method sets up the UIScrollView
(and a UIPageControl
, but let's ignore that for now) and then "loads" the first two pages. "Loading" a page consists of loading that page's view controller into memory and caching it. It then adds that controller's view as a subview to the UIScrollView
offset with an appropriate x based on what "page number" it is. You should be able to do all that in your viewDidLoad
.
If you have a blank view when your view controller's view is shown, then you haven't added the subview correctly to your UIScrollView
. Depending on what exactly you changed, that could be some combination of (a) not getting the x offset correct, (b) not setting the frame correctly, or (c) not adding it as a subview correctly.
If you post some of your own code we might be able to shed some light on the problem.
精彩评论