gpt4 book ai didi

ios - prepareForSegue 调用了两次

转载 作者:行者123 更新时间:2023-12-01 18:15:06 25 4
gpt4 key购买 nike

我有一个 UINavigationController有一个 UITableview装在里面。里面这个UITableView我有一个 prototype细胞,我用静态数据重用了几次,这些数据永远不会改变,也永远不会改变。所以,我从 viewControlller 连接了两个推送序列。它自己给两个他们的destination View Controller 。这似乎工作得很好。调用这些 segues , 我用 UItableViews委托(delegate)方法:didSelectRowAtIndexPath所以我知道点击了哪一行,然后转到正确的 viewController .

不,问题,它有效。

然后我添加了第三个 viewController及其随附的 segue匹配,与前两个相同,在 didSelectRowAtIndexPath 中设置相同- 现在,当我点击第二个单元格时,它正在工作,didSelectRowAtIndexPath按预期调用,然后调用正确的segue,然后prepareForSegue叫做。然后,prepareForSegue被再次调用(此时,didSelectRowAtIndexPath 未被再次调用)prepareForSegue然后方法调用不正确的segue(我添加的第三个segue)。

我不知道是谁在调用 prepareForSegue第二次方法以及为什么它得到错误的标识符。

有什么我做错了吗?

部分代码示例

这里是 didSelectRowAtIndexPath

    -(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
switch (indexPath.row)
{
case CategoryFilter:
{
[self performSegueWithIdentifier:@"FilteredCategoryView" sender:self];
break;
}
case PriceFilter:
{
[self performSegueWithIdentifier:@"FilterByPriceSegue" sender:self];
}
case ConditionFilter:
{
[self performSegueWithIdentifier:@"SearchFilterConditionSegue" sender:self];

}
}
}

然后在 prepareForSegue方法:
    - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{

if ([segue.identifier isEqualToString:@"FilteredCategoryView"]){



//No data to pass just yet


}
if ([segue.identifier isEqualToString:@"FilterByPriceSegue"]){
//No data to pass just yet

}
if ([segue.identifier isEqualToString:@"SearchFilterConditionSegue"]){

//No data to pass just yet
}
}

在上述方法中 - 我还没有传递数据,但我会的。它的这个方法被调用了两次。

最佳答案

你忘记了 break在您的 switch 的第二种和第三种情况下也许它会有所帮助;)

更改您的开关:

switch (indexPath.row)
{
case CategoryFilter:
{
[self performSegueWithIdentifier:@"FilteredCategoryView" sender:self];
break;
}
case PriceFilter:
{
[self performSegueWithIdentifier:@"FilterByPriceSegue" sender:self];
break;
}
case ConditionFilter:
{
[self performSegueWithIdentifier:@"SearchFilterConditionSegue" sender:self];
break;
}
}

如果你不把 break在您的每一种情况下,开关都会执行所有其他情况,直到开关结束或另一个 break操作说明。

关于ios - prepareForSegue 调用了两次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22758730/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com