Я пытаюсь заставить этот модуль работать в моем проекте, и я застрял в понимании того, как работает этот бит:

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)

Я видел вещи, в которых говорится, что мне нужно инициализировать контроллер представления с идентификатором раскадровки, который я установил в раскадровке, но когда я пытаюсь сделать что-то вроде

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

Но, честно говоря, я понятия не имею, где / когда это поставить / если это вообще то

Идея состоит в том, чтобы создать массив контроллеров представлений для отображения меню страницы с панелью вкладок вверху, но я не уверен, как именно сделать этот массив из представлений, которые я создаю в раскадровке.

1
Barkley 6 Сен 2016 в 05:45

5 ответов

Лучший ответ

Ну вот. 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)

}
2
David Park 6 Сен 2016 в 04:40

Модификация приведенного выше ответа, если вы используете 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)

}
4
Aks 6 Сен 2016 в 04:49

Обновленная версия Shrawn для Swift-3 совместим с симулятором 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)}
1
srsstyle 8 Май 2018 в 05:30

Обновленная версия Дэвида для Swift-3

Подфайл для 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)
}
3
Shrawan 17 Май 2017 в 13:06

Или вы можете использовать это репо. Это намного проще и понятнее для 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
0
Lakshika Bhardwaj 9 Мар 2017 в 05:49