Pass Array to the XLPagerTabBar delegate function to open VC

181 Views Asked by At

i'm working with the third party lib XLPagerTabBarStrip. it has delegate

override func viewControllers(for pagerTabStripController: PagerTabStripViewController) -> [UIViewController]

Now i'm trying to pass my array that contains the storyboard identifiers names. I'm running for loop to get the name and than pass that to my return statement. When i run the app it shows only last item of array. How can i pass all items of array to the return statement? My code is this,

var child1 = UIViewController()

 override func viewControllers(for pagerTabStripController: PagerTabStripViewController) -> [UIViewController] {

    let viewController = ["LoggedInVC","RegisterationVC"]

    for items in viewController{
        child1 = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: items)

    }
    return [child1]
}

When i run the app it only shows vc with identifier RegisterationVC. How can i show both at once?

1

There are 1 best solutions below

4
Teetz On BEST ANSWER

Your var child1 is of type UIViewController and you override this variable every time your loop is executed.

What you need is an Array of UIViewController

Try this:

 override func viewControllers(for pagerTabStripController: PagerTabStripViewController) -> [UIViewController] {

    var childs = Array<UIViewController>()

    let viewControllers = ["LoggedInVC","RegisterationVC"]

    for item in viewControllers {
        childs.append(UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: item))
    }

    return childs
}