将 Array 传递给 XLPagerTabBar 委托函数以打开 VC

Posted

技术标签:

【中文标题】将 Array 传递给 XLPagerTabBar 委托函数以打开 VC【英文标题】:Pass Array to the XLPagerTabBar delegate function to open VC 【发布时间】:2018-06-05 07:21:10 【问题描述】:

我正在使用第三方库 XLPagerTabBarStrip。它有委托

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

现在我正在尝试传递包含情节提要标识符名称的数组。我正在运行 for 循环以获取名称,然后将其传递给我的 return 语句。当我运行应用程序时,它只显示数组的最后一项。如何将所有数组项传递给 return 语句?我的代码是这样的,

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]

当我运行应用程序时,它只显示标识符为 RegisterationVC 的 vc。如何同时显示两者?

【问题讨论】:

【参考方案1】:

您的var child1UIViewController 类型,每次执行循环时都会覆盖此变量。

你需要的是一个UIViewController的数组

试试这个:

 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

【讨论】:

如果我有动态数组,可以用这种方法吗? @Teetz @raheem 你对动态数组的具体含义是什么? (如果您想提供更多信息,可以编辑您的问题) 不,我只是想问如果我有动态数组,那么这个方法可以写吗? @Teetz 只需根据您想要实现的目标填写您需要的标识符数组。

以上是关于将 Array 传递给 XLPagerTabBar 委托函数以打开 VC的主要内容,如果未能解决你的问题,请参考以下文章

为啥将 Array.from 作为回调传递给 Array.flatMap 时出现 TypeError: 0 is not a function?

如何将二维数组作为 multiprocessing.Array 传递给 multiprocessing.Pool?

为啥将 C-Array 传递给函数时 sizeof() 值错误? [复制]

将 STRUCT 的 ARRAY 传递给标准 BigQuery SQL 的用户定义函数

如何将 url-array-parameter 传递给 pg_execute

将 oracle.sql.ARRAY 传递给 PL/SQL 过程时设置时区