0
我一直在嘗試創建一個具有3個視圖的開放場景,這些視圖嵌入在頁面視圖控制器中。我們的目標是創建一些類似Instagram的內容,其中您的社交媒體饋送位於中間,然後當您向右滑動時,它會將您引導至視圖,如果向左滑動,則會將您帶到不同的視圖。然而,用我目前的代碼,視圖控制器無限地滑動,我想知道是否有人知道如何解決這個問題。取出頁面視圖控制器設置的無限循環
這裏是我的當前設置的樣子: Current Setup of Page Views
這是我多麼希望它看起來像: What I want the functionality to be
這裏是我的網頁瀏覽器的代碼。我有一個主頁面視圖控制器連接其他2個視圖。
class HomeRootPageViewController: UIPageViewController, UIPageViewControllerDataSource, UIPageViewControllerDelegate {
lazy var viewControllerArray: [UIViewController] = {
return [self.ViewControllerInstance(name: "FeedViewController"),
self.ViewControllerInstance(name: "DMViewController"),
self.ViewControllerInstance(name: "ProfileViewController")]
}()
private func ViewControllerInstance(name: String) -> UIViewController {
return UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: name)
}
override func viewDidLoad() {
super.viewDidLoad()
self.dataSource = self
self.delegate = self
if let firstViewController = viewControllerArray.first {
setViewControllers([firstViewController], direction: .forward, animated: true, completion: nil)
}
}
public func pageViewController(_ pageViewController: UIPageViewController, viewControllerBefore viewController: UIViewController) -> UIViewController? {
guard let viewControllerIndex = viewControllerArray.index(of: viewController) else {
return nil
}
let previousIndex = viewControllerIndex - 1
guard previousIndex >= 0 else {
return viewControllerArray.last
}
guard viewControllerArray.count > previousIndex else {
return nil
}
return viewControllerArray[previousIndex]
}
public func pageViewController(_ pageViewController: UIPageViewController, viewControllerAfter viewController: UIViewController) -> UIViewController? {
guard let viewControllerIndex = viewControllerArray.index(of: viewController) else {
return nil
}
let nextIndex = viewControllerIndex + 1
guard nextIndex < viewControllerArray.count else {
return viewControllerArray.first
}
guard viewControllerArray.count > nextIndex else {
return nil
}
return viewControllerArray[nextIndex]
}
}
任何幫助,將不勝感激!
導致此行崩潰:return viewControllerArray [previousIndex]。錯誤表示致命錯誤:索引超出範圍。 –
也許反轉viewControllerArray.last和viewControllerArray.first位置。因爲如果索引低於0你想顯示的第一頁不是最後的 – Nitrousjp
或者只是返回零 – Nitrousjp