【发布时间】:2018-01-02 06:01:32
【问题描述】:
几个月前我刚刚开始使用 swift 进行编程,目前我正在做一些随机项目,以帮助我更好地学习这门语言。目前,我正在尝试使用 UIPageViewController 创建类似于 Snapchat 的 UI。水平滚动工作正常,我可以正确浏览页面,但我想更改显示的初始视图控制器。在下面的代码中,我有三个 ViewController(vc1、vc2、vc3)。我想让它们保持相同的顺序,但首先显示 vc2,所以基本上把它放在另外两个的中间。感谢所有帮助。谢谢!
import UIKit
import FirebaseDatabase
import FirebaseAuth
import Firebase
class RootPageViewController: UIPageViewController, UIPageViewControllerDataSource {
let Cards = CardsVC()
lazy var viewControllerList:[UIViewController] = {
let sb = UIStoryboard(name: "Main", bundle: nil)
let vc1 = sb.instantiateViewController(withIdentifier: "MessagesVC")
let vc2 = sb.instantiateViewController(withIdentifier: "CardsVC")
let vc3 = sb.instantiateViewController(withIdentifier: "ProfileVC")
return[vc1, vc2, vc3]
}()
override func viewDidLoad() {
super.viewDidLoad()
//if Auth.auth().currentUser?.uid == nil{
//logout()
//}else{
self.dataSource = self
if let firstViewController = viewControllerList.first{
self.setViewControllers([firstViewController], direction: .forward, animated: true, completion: nil)
}
//}
}
func logout(){
let storyboard = UIStoryboard(name: "Main", bundle: nil)
let verifyPhoneVC = storyboard.instantiateViewController(withIdentifier: "enterPhoneNumber")
present(verifyPhoneVC, 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]
}
}
【问题讨论】:
标签: ios swift uiviewcontroller uipageviewcontroller