从情节提要中实现 PageMenu / 初始化视图控制器

Implementing PageMenu / initializing view controllers from storyboard

我正在尝试让这个 pod 在我的项目中工作,但我一直在理解这个位是如何工作的:

https://github.com/uacaps/PageMenu

// Create variables for all view controllers you want to put in the 
// page menu, initialize them, and add each to the controller array. 
// (Can be any UIViewController subclass)
// Make sure the title property of all view controllers is set
// Example:
var controller : UIViewController = UIViewController(nibName: "controllerNibName", bundle: nil)
controller.title = "SAMPLE TITLE"
controllerArray.append(controller)

我看到有人说我需要使用我在情节提要中设置的情节提要 ID 来初始化视图控制器,但是当我尝试做类似

的事情时
let storyboard = UIStoryboard(name: "MyStoryboardName", bundle: nil)
let vc =      storyboard.instantiateViewControllerWithIdentifier("someViewController") as! UIViewController
self.presentViewController(vc, animated: true, completion: nil)

但老实说,我不知道 where/when 怎么说/如果那是什么

我的想法是为页面菜单制作一个视图控制器数组,以在顶部显示标签栏,但我不确定如何根据我在故事板中制作的视图制作该数组.

给你。 PageMenu 超级酷而且超级可定制。玩得开心。希望这可以帮助。如果您 运行 遇到任何其他问题,请告诉我。

var pageMenu: CAPSPageMenu?

override func viewDidLoad() {
    super.viewDidLoad()

    setupPages()
}    

func setupPages() {

    var controllerArray: [UIViewController] = []

    let firstVC = FirstViewController()
    firstVC.title = "FirstOne"

    let secondVC = SecondViewController()
    secondVC.title = "Another One"

    let thirdVC = ThirdViewController()
    thirdVC.title = "And Another One"

    controllerArray.append(firstVC)
    controllerArray.append(secondVC)
    controllerArray.append(thirdVC)

    // a bunch of random customization
    let parameters: [CAPSPageMenuOption] = [
        .ScrollMenuBackgroundColor(UIColor.quotesBackgroundColor()),
        .ViewBackgroundColor(UIColor.quotesBackgroundColor()),
        .SelectionIndicatorColor(UIColor.peterRiverColor()),
        .BottomMenuHairlineColor(UIColor(red: 70.0/255.0, green: 70.0/255.0, blue: 80.0/255.0, alpha: 1.0)),
        .MenuHeight(40.0),
        .MenuItemWidth(100.0),
        .CenterMenuItems(true),
        .SelectedMenuItemLabelColor(UIColor.blueColor())
        ]

    pageMenu = CAPSPageMenu(viewControllers: controllerArray, frame: CGRectMake(0.0, 0.0, self.view.frame.width, self.view.frame.height), pageMenuOptions: parameters)

    self.view.addSubview(pageMenu!.view)

}

如果您使用 storyboardIds 进行 viewcontroller 实例化,请修改上述答案。

var pageMenu: CAPSPageMenu?

override func viewDidLoad() {
    super.viewDidLoad()

    setupPages()
}    

func setupPages() {
    let storyboard = UIStoryboard(name: "MyStoryboardName", bundle: nil)

    var controllerArray: [UIViewController] = []

    let firstVC = storyboard.instantiateViewControllerWithIdentifier("FirstViewControlleridentifier") as! FirstViewController
    firstVC.title = "FirstOne"

    let secondVC = storyboard.instantiateViewControllerWithIdentifier("SecondViewControlleridentifier") as! SecondViewController
    secondVC.title = "Another One"

    let thirdVC = storyboard.instantiateViewControllerWithIdentifier("ThirdViewControlleridentifier") as! ThirdViewController
    thirdVC.title = "And Another One"

    controllerArray.append(firstVC)
    controllerArray.append(secondVC)
    controllerArray.append(thirdVC)

    // a bunch of random customization
    let parameters: [CAPSPageMenuOption] = [
        .ScrollMenuBackgroundColor(UIColor.quotesBackgroundColor()),
        .ViewBackgroundColor(UIColor.quotesBackgroundColor()),
        .SelectionIndicatorColor(UIColor.peterRiverColor()),
        .BottomMenuHairlineColor(UIColor(red: 70.0/255.0, green: 70.0/255.0, blue: 80.0/255.0, alpha: 1.0)),
        .MenuHeight(40.0),
        .MenuItemWidth(100.0),
        .CenterMenuItems(true),
        .SelectedMenuItemLabelColor(UIColor.blueColor())
        ]

    pageMenu = CAPSPageMenu(viewControllers: controllerArray, frame: CGRectMake(0.0, 0.0, self.view.frame.width, self.view.frame.height), pageMenuOptions: parameters)

    self.view.addSubview(pageMenu!.view)

}

或者您可以使用此存储库。它对于 RnD 来说非常简单易懂。 (Swift 3 个代码)

https://github.com/lakshikabhardwaj/LBViewControllerCollection

  let mainViewController = CPPageMenuVC(nibName: "CPPageMenuVC", bundle: nil)
  let pageMenuarray :[PageModal] = [PageModal(pageTitle: "Cat", pageVC: cpCatVC),PageModal(pageTitle: "Cow", pageVC: cowCX),PageModal(pageTitle: "Chat", pageVC: cpCatVC),PageModal(pageTitle: "ElephantElephant", pageVC: elephantVC)]

  pageMenuVC.pageArray = pageMenuarray

已更新 Swift-3 版本的 David

Podfile for Swift-3
pod 'PageMenu' , :git => 'https://github.com/orazz/PageMenu'

func setupPages() {
    var controllerArray: [UIViewController] = []
    let firstVC = FirstVC()
    firstVC.title = "First"
    let secondVC = SecondVC()
    secondVC.title = "Second"
    let thirdVC = ThirdVC()
    thirdVC.title = "Third"

    controllerArray.append(firstVC)
    controllerArray.append(secondVC)
    controllerArray.append(thirdVC)

    let parameters: [CAPSPageMenuOption] = [
        .scrollMenuBackgroundColor(.blue),
        .viewBackgroundColor(.white),
        .selectionIndicatorColor(.white),
        .bottomMenuHairlineColor(.white),
        .menuHeight(40.0),
        .menuItemWidth(self.view.frame.width/3),
        .centerMenuItems(true),
        .selectedMenuItemLabelColor(.white),
        .unselectedMenuItemLabelColor(.white),
        .menuMargin(0.0)
    ]

    pageMenu = CAPSPageMenu(viewControllers: controllerArray, frame: CGRect(x:0,y:64,width:self.view.frame.width ,height:self.view.frame.height) , pageMenuOptions: parameters)
     self.view.addSubview(pageMenu!.view)
}

Swift-3 版 Shrawn 兼容 iPhone-X 模拟器

func setupPages() {

var controllerArray: [UIViewController] = []
let firstVC = FirstVC()
firstVC.title = "First"
let secondVC = SecondVC()
secondVC.title = "Second"
let thirdVC = ThirdVC()
thirdVC.title = "Third"

controllerArray.append(firstVC)
controllerArray.append(secondVC)
controllerArray.append(thirdVC)

let parameters: [CAPSPageMenuOption] = [
    .scrollMenuBackgroundColor(.blue),
    .viewBackgroundColor(.white),
    .selectionIndicatorColor(.white),
    .bottomMenuHairlineColor(.white),
    .menuHeight(40.0),
    .menuItemWidth(self.view.frame.width/3),
    .centerMenuItems(true),
    .selectedMenuItemLabelColor(.white),
    .unselectedMenuItemLabelColor(.white),
    .menuMargin(0.0)
]

pageMenu = CAPSPageMenu(viewControllers: controllerArray, frame: CGRect(x:0,y:(self.navigationController?.navigationBar.frame.maxY)!,width:self.view.frame.width ,height:self.view.frame.height), pageMenuOptions: parameters)

    self.view.addSubview(pageMenu!.view)}