从故事板实现PageMenu /初始化视图控制器

时间:2016-09-06 02:45:51

标签: ios swift uiviewcontroller uistoryboard

我正在尝试让这个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)

但说实话,我不知道在何处/何时放置/如果那甚至是什么

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

5 个答案:

答案 0 :(得分:4)

如果您正在使用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)

}

答案 1 :(得分:3)

更新了 David

的Swift-3版本
  

Swift-3的Podfile     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)
}

答案 2 :(得分:2)

你走了。 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)

}

答案 3 :(得分:1)

更新的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)}

答案 4 :(得分:0)

或者你可以使用这个回购。它对于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