2014-01-12 38 views
18

像Twitter那樣:如何在導航欄內添加頁面指示器?

enter image description here

我有一個的UITabBarController內PageViewController這又是一個UINavigationController內。

誰能告訴我如何在導航欄內顯示頁面指示器?

+0

他們最有可能寫出自己的看法。 – nhahtdh

+0

您可以使用self.navigationController.navigationItem.titleView,它是一個UIView。創建頁面指示器的自定義實現並將其設置爲titleView。但是,您還需要注意自定義標題頁面指示器視圖和其他組件之間的交互是如何進行的? – ldindu

回答

13

編輯:我只是想出了navigationController.viewControllers只包含堆棧。 我會在一分鐘後發佈編輯

編輯2:好吧,看來你必須事先知道視圖控制器的數量。

也許不是最好的解決方案,但它適用於我。剛剛嘗試:)

@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 

這裏是一些截圖。

First View Second view

+0

這對UIPageViewControllers來說應該不難 – chrs