ios - 无法将类型 '()' 的值转换为预期的参数类型“[UIViewController]?

标签 ios swift uitabbarcontroller

在我的应用程序中,我试图做这样的事情:

class tabBarController : UITabBarController {

    ...

    func example (){
        let navController : UINavigationController = UINavigationController(rootViewController: calendarVC) //calendarVC is a UIViewController

        guard var VCs = self.viewControllers as [UIViewController]? else{
            self.setViewControllers([navController], animated: false)
            return
        }
        self.setViewControllers(VCs.append(navController), animated: false)
    }

    ...

}

但是在函数的最后一行我得到了一个错误:

Cannot convert value of type '()' to expected argument type '[UIViewController]?

我该如何解决这个问题?谢谢。

最佳答案

append 改变数组而不是返回一个添加了值的新数组。将你的最后一行分成 2:

VCs.append(navController)
self.setViewControllers(VCs, animated: false)

关于ios - 无法将类型 '()' 的值转换为预期的参数类型“[UIViewController]?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32874256/

相关文章:

ios - 如何在 iOS 共享扩展中获取共享对象的文件名

ios - 如何让导航栏显示在 AVCapture session 中

ios - 如何从数组中的所有结构调用参数

带有 Storyboard的 iOS 动态选项卡

iphone - 如何像键盘一样在 TabBar 上显示 UIDatePIcker

ios - 如何从另一个 UITab 中的 UITableViewCell 连接选项卡中的 Map ViewController?

ios - Firebase Storage 的 getMetaData() 是否调用后端(并因此引入较小的延迟)?

ios - Cocoapods/Podspec 从 HEADER_SEARCH_PATHS 中排除 header

ios - subview 的 IBAction 以检查图像是否被隐藏

swift - 有人可以解释为什么我在更改一行代码时收到一条错误消息,提示我缺少返回