Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/113.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 segue与协议/委托数据传递调用两次_Ios_Uitableview_Segue - Fatal编程技术网

Ios segue与协议/委托数据传递调用两次

Ios segue与协议/委托数据传递调用两次,ios,uitableview,segue,Ios,Uitableview,Segue,我想在序列之前设置tableViewCell中的一些数据。在我的表扩展中,我选择了rowat来设置数据。这是基于我读到的建议,用以下方法触发segue: performSegue(withIdentifier: "itemSelected", sender: cell) 故事板中表行选择操作的我的segue正在启动,执行流正在到达该控制器的prepare for:segue before didSelectRowAt正在启动。结果是,我的performsgue和之前设置它的工作在初次尝试后得到

我想在序列之前设置tableViewCell中的一些数据。在我的表扩展中,我选择了rowat来设置数据。这是基于我读到的建议,用以下方法触发segue:

performSegue(withIdentifier: "itemSelected", sender: cell)
故事板中表行选择操作的我的segue正在启动,执行流正在到达该控制器的prepare for:segue before didSelectRowAt正在启动。结果是,我的performsgue和之前设置它的工作在初次尝试后得到处理,并且看起来目标视图控制器连续快速加载了两次,第二次加载是正确的

我想知道如何定义segue,但将其从故事板上的选择操作中删除


ps:我知道shouldPerformSegue可以用来中止先到的自动程序。。但是,似乎一开始就不必中止它会更好。

当您将segue附加到单元格选择操作时,导航会发生两次,一次是附加,另一次是didSelectRowAt中的performSegue代码,因此,您需要将segue连接到VC本身

您的segue可能直接连接到故事板上的tableViewCell。当您像这样将它附加到单元格时,Xcode实际上是将performsgue附加到该单元格上的didSelectRowAt方法


要修复此问题,您需要segue来自视图控制器本身。这将定义segue,而不将其附加到任何操作。然后,您可以通过编程方式调用它。

segue连接到单元格或VC?连接到单元格的选择操作这很酷-我会在OP中的代码中将发件人更改为self而不是cell吗?只是验证。。。另外,更重要的是,我如何以这种方式处理多个标识符?这取决于您想在prepareForSegue中获取什么,我认为发送单元格更有意义,这样您就可以知道按下的单元格,self在prepareForSegue中无论如何都是可访问的。谢谢,这已经奏效了。我不清楚如何命名它,因为它只有一个箭头,但您仍然可以使用不同的标识符命名每个箭头。您可以创建一个标识符数组,并根据arrofinDefiders[indexPath.row]进行导航。发送方仅用于将数据传递给prepareForSegue方法。这可能是用于初始化下一个viewController的数据,也可能是零。这只是一种在函数中传递所需数据的方法。请注意,发送方的类型是Any?。