2014-01-12 22 views
18

wie Twitter tat:Wie füge ich einen Seitenindikator in die Navigationsleiste ein?

enter image description here

ich eine PageViewController in einem UITabBarController haben, die wiederum in einem UINavigationController ist.

Kann mir jemand sagen, wie ich den Seitenindikator in der Navigationsleiste anzeigen soll?

+0

sie höchstwahrscheinlich ihre eigene Sicht zu schreiben. – nhahtdh

+0

Sie können self.navigationController.navigationItem.titleView verwenden, was eine UIView ist. Erstellen Sie eine benutzerdefinierte Implementierung des Seitenindikators und legen Sie sie auf titleView fest. Sie müssen jedoch auch darauf achten, wie die Interaktion zwischen Ihrer benutzerdefinierten Titelseitenanzeige und anderen Komponenten stattfindet. – ldindu

Antwort

13

Edit: Ich habe gerade herausgefunden, dass navigationController.viewControllers nur den Stapel enthält. Ich werde eine Bearbeitung in einer Minute

Edit 2: Nun, es scheint, dass Sie die Anzahl der View-Controller vor der Hand wissen müssen.

Vielleicht nicht die beste Lösung, aber es funktioniert für mich. Nur versucht :)

@interface ViewController() <UINavigationControllerDelegate> 
@property (nonatomic, strong) UIPageControl *pageControl; 
@end 

@implementation ViewController 

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 

    UINavigationController *navController = self.navigationController; 
    navController.delegate = self; 

    navController.navigationBar.barTintColor = [UIColor colorWithRed:.2 
                   green:.4 
                   blue:.9 
                   alpha:1]; 

    CGSize navBarSize = navController.navigationBar.bounds.size; 
    CGPoint origin = CGPointMake(navBarSize.width/2, navBarSize.height/2); 

    self.pageControl = [[UIPageControl alloc] initWithFrame:CGRectMake(origin.x, origin.y, 
                     0, 0)]; 

    //Or whatever number of viewcontrollers you have 
    [self.pageControl setNumberOfPages:2]; 

    [navController.navigationBar addSubview:self.pageControl]; 

    navController.delegate = self; 
} 

- (void)navigationController:(UINavigationController *)navigationController willShowViewController:(UIViewController *)viewController animated:(BOOL)animated 
{ 
    int index = [navigationController.viewControllers indexOfObject:viewController]; 
    self.pageControl.currentPage = index; 
} 

@end 

Hier sind einige Screenshots.

First View Second view

+0

Es sollte nicht schwierig sein, dies für UIPageViewControllers funktionieren – chrs

Verwandte Themen