Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios Can';t使用segue将数据传递给第二个控制器_Ios_Swift_Segue - Fatal编程技术网

Ios Can';t使用segue将数据传递给第二个控制器

Ios Can';t使用segue将数据传递给第二个控制器,ios,swift,segue,Ios,Swift,Segue,当tableview中的单元格被按下时,我无法让一个简单的序列工作。在我点击两个不同的项目后,它确实转到下一个视图。但我无法将任何值从第一个控制器传递到第二个控制器。如果我在第二个控制器中为标签设置一个值,并将其加载到viewDidLoad方法中,它就会显示出来 我快发疯了,因为我多年来一直想得到这份工作 我的故事板: CategoryListViewController(第一个控制器): FormulaListViewController(第二个控制器): 我的错误在哪里?我做错了什么 我非常

当tableview中的单元格被按下时,我无法让一个简单的序列工作。在我点击两个不同的项目后,它确实转到下一个视图。但我无法将任何值从第一个控制器传递到第二个控制器。如果我在第二个控制器中为标签设置一个值,并将其加载到
viewDidLoad
方法中,它就会显示出来

我快发疯了,因为我多年来一直想得到这份工作

我的故事板:

CategoryListViewController(第一个控制器):

FormulaListViewController(第二个控制器):

我的错误在哪里?我做错了什么


我非常感谢您所需要的任何帮助

您需要的是
didSelectRowAt
而不是
didSelectRowAt

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
    performSegue(withIdentifier: "showFormulaList", sender: self)
}
还要确保segue source是vc而不是cell,并且由于您在
didrowat
中触发segue,因此

if let indexPath = tableView.indexPathForSelectedRow 

将为零

您已使用的
didrowat

func tableView(_ tableView: UITableView, didDeselectRowAt indexPath: IndexPath) {
        performSegue(withIdentifier: "showFormulaList", sender: self)
}
您需要使用
didSelectRowAt

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
            performSegue(withIdentifier: "showFormulaList", sender: self)
}
您应该使用didSelect而不是DIDSELECTROWAT,而且您应该传递比self更好的内容,因为使用self您传递的是整个类别列表视图控制器 试着像这样通过测试

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
    performSegue(withIdentifier: "showFormulaList", sender: indexPath)
}
并更改了此中的函数prepare

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
    if segue.identifier == "showFormulaList" {
        if let indexPath = sender as? IndexPath {
            let category = self.categoryList[indexPath.row]
            let formulaListViewController = (segue.destination as! UINavigationController).topViewController as! FormulaListViewController
            formulaListViewController.fuckSwift = category
            formulaListViewController.navigationItem.leftBarButtonItem = splitViewController?.displayModeButtonItem
            formulaListViewController.navigationItem.leftItemsSupplementBackButton = true
        }
    }

}
如果这无法帮助您调试代码并找到丢失变量的位置:)

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
    performSegue(withIdentifier: "showFormulaList", sender: self)
}
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
    performSegue(withIdentifier: "showFormulaList", sender: indexPath)
}
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
    if segue.identifier == "showFormulaList" {
        if let indexPath = sender as? IndexPath {
            let category = self.categoryList[indexPath.row]
            let formulaListViewController = (segue.destination as! UINavigationController).topViewController as! FormulaListViewController
            formulaListViewController.fuckSwift = category
            formulaListViewController.navigationItem.leftBarButtonItem = splitViewController?.displayModeButtonItem
            formulaListViewController.navigationItem.leftItemsSupplementBackButton = true
        }
    }

}