无法在 iOS 中设置 prepare for segue

can't set prepare for segue in iOS

我有两个控制器 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()
    }
}

点击后我看到了

Could not cast value of type 'myProjectName.TableViewController' (0x5a068) to 'UINavigationController' (0x17ffed4).

为什么会这样?

只是:

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

看起来 destinationViewController 是 TableViewController。