2017-04-30 67 views
0

我有問題,試圖找出爲什麼導航欄項目不合適 - 擠壓到兩端。UINavigationbar項目不在位置

請參閱https://drive.google.com/file/d/0B8bNRC27tztoTkZwamVlSllMNjA/view 這裏沒有任何東西可以解決這個問題。我的視圖層次結構是

pageviewcontroller -> navViewController -> VC1

我能夠解決這個問題,但除去在pageviewcontroller類此行

addChildViewController(pageViewController) 

,但我需要爲pageviewcontroller正常運行。任何幫助,這是非常感謝。

應用程序的委託:

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool { 



     let PageVC = PageViewController() 


     window = UIWindow(frame: UIScreen.main.bounds) 
     window!.rootViewController = PageVC 
     window!.makeKeyAndVisible() 

     return true 
    } 

完全pageviewcontroller代碼:

import UIKit 

class PageViewController: UIPageViewController, UIPageViewControllerDataSource, UIPageViewControllerDelegate{ 
     var viewControllerList = [UIViewController]() 



    override func viewDidLoad() { 
     super.viewDidLoad() 

     let vc1 = IntroViewController() 
     let vc2 = CamViewController() 
     let navigationController = UINavigationController(rootViewController: vc1) 
     let navigationController2 = UINavigationController(rootViewController: vc2) 
     viewControllerList = [navigationController,navigationController2] 
     self.dataSource = self 
     self.delegate = self 

     let firstViewController = viewControllerList.first 
      self.setViewControllers([firstViewController!], direction: .forward, animated: true, completion: nil) 

    } 

    func pageViewController(_ pageViewController: UIPageViewController, viewControllerBefore viewController: UIViewController) -> UIViewController? { 

     guard let vcIndex = viewControllerList.index(of: viewController) else {return nil} 
     let previousIndex = vcIndex - 1 
     guard previousIndex >= 0 else {return nil} 
     guard viewControllerList.count > previousIndex else {return nil} 

     return viewControllerList[previousIndex] 

    } 

    func pageViewController(_ pageViewController: UIPageViewController, viewControllerAfter viewController: UIViewController) -> UIViewController? { 

     guard let vcIndex = viewControllerList.index(of: viewController) else {return nil} 

     let nextIndex = vcIndex + 1 

     guard viewControllerList.count != nextIndex else { return nil} 

     guard viewControllerList.count > nextIndex else { return nil } 

     return viewControllerList[nextIndex] 

    } 
+0

如果你的頁面視圖控制器的框架是整個邊界,爲什麼你甚至不需要給予好評這其他視圖控制器在第一個地方? 您的層次結構看起來像 不必要的VC - > PageVC - > NavController - > VC1。 爲什麼你需要不必要的VC? – 7to4

+0

好問題。我的理想方法是僅僅對pageVC進行子類化,而不是在另一個VC中創建它,但是我無法確定如何設置pageVC的過渡樣式(如果子類)。這行'讓pageViewController = UIPageViewController(transitionStyle:.scroll,navigationOrientation:.horizo​​ntal,options:nil)'完成了如果我在另一個VC中創建PageVC。希望是有道理的。但我明白它完全沒有必要。不過,我認爲這是問題,但同樣的問題仍然存在 –

+0

我很抱歉採取切線路徑,但我想我可以通過刪除不必要的VC來避免這種情況。這是不必要的VC你的應用程序的初始屏幕?你使用故事板或代碼? – 7to4

回答