将两种不同类型的对象作为一个函数变量传递

时间:2016-02-29 18:00:38

标签: ios swift uiviewcontroller

我想创建一个带有两个不同UIViewController子类的函数。一个是UITableViewController,一个是UIViewController(都是从UIViewController继承的)。在我的函数中,我想检查ViewControllers的类型,以便在我的函数中访问它们的属性。如果有可能,我怎么能这样做?我已经厌倦了以下事情:

internal func myFunction(var controller: UIViewController) {

        if controller is MyController {
            controller = controller as! MyController
        }
        // Get errors saying my MyController properties are not available. Type of UIViewController has no member.
}

1 个答案:

答案 0 :(得分:3)

如果我理解你,你想知道你的参数是哪种类型。如果是这样,请使用这种方法:

internal func myFunction(controller: UIViewController) {

    if let menu = controller as? MenuController {
        //menu is you MenuCOntroller
    } else if let table = controller as? UITableViewController {
        //table is your UITableViewController
    }

}