无法为iOS

时间:2015-09-11 18:14:36

标签: ios iphone swift uiviewcontroller segue

我有两个控制器UINavigationControllerUIViewController(root)和UITableViewController)。我需要点击UIViewController处的操作并在移至UITableViewController

时打印一些内容

TableViewController.swift

func printString() {
    print("hello world")
}

ViewController.swift

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
    if segue.identifier == "sendData" {
        let navController = segue.destinationViewController as! UINavigationController
        let controller = navController.topViewController as! TableViewController
        controller.printString()
    }
}

点击后我看到了

  

无法将'myProjectName.TableViewController'(0x5a068)类型的值转换为'UINavigationController'(0x17ffed4)。

为什么会这样?

1 个答案:

答案 0 :(得分:0)

仅仅是:

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
        if segue.identifier == "sendData",
            let controller = segue.destinationViewController as? TableViewController {
                controller.printString()
            }
        }
    }

看起来destinationViewController是TableViewController。