我有問題,試圖找出爲什麼導航欄項目不合適 - 擠壓到兩端。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]
}
如果你的頁面視圖控制器的框架是整個邊界,爲什麼你甚至不需要給予好評這其他視圖控制器在第一個地方? 您的層次結構看起來像 不必要的VC - > PageVC - > NavController - > VC1。 爲什麼你需要不必要的VC? – 7to4
好問題。我的理想方法是僅僅對pageVC進行子類化,而不是在另一個VC中創建它,但是我無法確定如何設置pageVC的過渡樣式(如果子類)。這行'讓pageViewController = UIPageViewController(transitionStyle:.scroll,navigationOrientation:.horizontal,options:nil)'完成了如果我在另一個VC中創建PageVC。希望是有道理的。但我明白它完全沒有必要。不過,我認爲這是問題,但同樣的問題仍然存在 –
我很抱歉採取切線路徑,但我想我可以通過刪除不必要的VC來避免這種情況。這是不必要的VC你的應用程序的初始屏幕?你使用故事板或代碼? – 7to4