Ich weiß nicht, ob Sie noch daran arbeiten, aber hier geht es trotzdem. Um einen UIPageViewController einzurichten, können Sie das Tutorial und zwei Fragen verwenden.
http://www.appcoda.com/uipageviewcontroller-storyboard-tutorial/
How to implement UIPageViewController that utilizes multiple ViewControllers
How to add UIBarButtonItem to NavigationBar while using UIPageViewController
Das letzte Glied auf speziell auf den Inhalt der navigationbar Einstellung bezieht sich je nachdem, was Sie sehen.
Der Schlüssel besteht darin, eine UINavigationItem-Eigenschaft in der .h-Datei Ihres UIPageViewController-Inhaltsansicht-Controllers zu erstellen, dh diejenigen, die anzeigen, was auch immer Sie anzeigen.
Von meinem Code in FirstViewController.h
SecondViewController.h
und ThirdViewController.h
@property (strong, nonatomic) UINavigationItem *navItem;
In den zweiten und dritten Links oben werden Sie ein Storyboard Layout einer Master-Detail-Anwendung sehen (die einen Navigation-Controller verwendet). Die UIPageViewControllerDataSource
ist die DetailViewController
. Die drei mit pageViewController
verbundenen Seiten sind meine Inhaltsansicht-Controller.
In DetailViewController.m müssen Sie die contentViewControllers irgendwo instanziieren. An diesem Punkt übergeben Sie die DetailViewControllers navigationItem-ID an die Inhaltsansicht-Controller. So instanziiere ich meine Inhaltsansicht-Controller mithilfe der Delegate-Methoden von UIPageViewController
.
- (UIViewController *)pageViewController:(UIPageViewController *)pageViewController viewControllerBeforeViewController:(UIViewController *)viewController
{
NSString * ident = viewController.restorationIdentifier;
NSUInteger index = [_vc indexOfObject:ident];
if ((index == 0) || (index == NSNotFound)) {
return nil;
}
index--;
if (index == 0) {
return [self controllerAtIndex:index];
}else if (index == 1){
return [self secondControllerAtIndex:index];
}else if (index == 2){
return [self thirdControllerAtIndex:index];
}else{
return nil;
}
}
Die Delegate-Methode ruft die folgende Methode auf. Es ist fast direkt von der Tutorial-Link mit nur ein paar Änderungen.
-(FirstController *)controllerAtIndex:(NSUInteger)index
{
FirstController *fvc = [self.storyboard instantiateViewControllerWithIdentifier:@"FirstPageController"];
fvc.imageFile = self.pageImages[index];
fvc.titleText = self.pageTitles[index];
fvc.pageIndex = index;
fvc.navItem = self.navigationItem;
return fvc;
}
Hinweis, dass die Eigenschaften in den View-Controller einschließlich self.navigationItem
geben werden. Wenn Sie es übergeben, können Sie Änderungen an den navigationBar-Elementen vornehmen.
Dann in der viewDidAppear
Methode Ihrer Content-View-Controller können Sie einfach den Titel auf der Navigationsleiste wie folgt festlegen.
navItem.navigationItem.title = @"Whatever you want the title to be";
Es ist wichtig, heißt der Bildschirm erscheint jedes Mal, nicht viewDidAppear
weil viewDidLoad
zu verwenden. Ich glaube, der UIPageViewController speichert die Seite vor und die Seite nach dem, was Sie gerade sehen, wodurch das System die Seite nicht jedes Mal laden muss, wenn Sie dorthin navigieren.
Wenn Sie einen einzelnen View-Controller für alle Ihre Seiten wie das Tutorial verwenden, müssen Sie die Eigenschaft index verwenden, um zu wissen, worauf Sie den Titel setzen sollen.
Hoffe, das hilft!
Wie haben Sie die Punkte in der Navigationsleiste erhalten? :) –