ios - 添加 performSegueWithIdentifier() 调用后,将创建两个不同的转场

标签 ios objective-c xcode segue

我在单击按钮时使用 performSegueWithIdentifier() 以便我可以将正确的信息传递给我的下一个 ViewController。当我单击该按钮时,它会移动到一个新 View 空白 View ,然后使用 performSegueWithIdentifier() 调用提供的信息打开我想要的 View 。这需要用户点击后退按钮 2 次才能返回主视图。

有没有办法确保在我使用 performSegueWithIdentifier() 后不会自动调用 prepareForSegue()?我有一种感觉,这是因为我用 performSegueWithIdentifier() 调用调用了 prepareForSegue(),然后自动调用了第二次。

这是我使用 performSegueWithIdentifier() 方法的代码:

if (page == 1)
    [self performSegueWithIdentifier:@"time1" sender:self];
else if (page == 2
    [self performSegueWithIdentifier:@"time2" sender:self];
else if (page == 3)
    [self performSegueWithIdentifier:@"time3" sender:self];
else if (page == 4)
    [self performSegueWithIdentifier:@"time4" sender:self];
else if (page == 5)
    [self performSegueWithIdentifier:@"time5" sender:self];
else if (page == 6)
    [self performSegueWithIdentifier:@"time6" sender:self];
else if (page == 7)
    [self performSegueWithIdentifier:@"time7" sender:self];
else if (page == 8)
    [self performSegueWithIdentifier:@"time8" sender:self];
else if (page == 9)
    [self performSegueWithIdentifier:@"time9" sender:self];
else if (page == 10)
    [self performSegueWithIdentifier:@"time10" sender:self];
else if (page == 11)
    [self performSegueWithIdentifier:@"time11" sender:self];
else if (page == 12)
    [self performSegueWithIdentifier:@"time12" sender:self];
else if (page == 13)
    [self performSegueWithIdentifier:@"time13" sender:self];

这是我的 prepareForSegue() 方法:

- (void) prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    if ([segue.identifier isEqualToString:@"time1"] ||
        [segue.identifier isEqualToString:@"time2"] ||
        [segue.identifier isEqualToString:@"time3"] ||
        [segue.identifier isEqualToString:@"time4"] ||
        [segue.identifier isEqualToString:@"time5"] ||
        [segue.identifier isEqualToString:@"time6"] ||
        [segue.identifier isEqualToString:@"time7"] ||
        [segue.identifier isEqualToString:@"time8"] ||
        [segue.identifier isEqualToString:@"time9"] ||
        [segue.identifier isEqualToString:@"time10"] ||
        [segue.identifier isEqualToString:@"time11"] ||
        [segue.identifier isEqualToString:@"time12"] ||
        [segue.identifier isEqualToString:@"time13"])
    {
        InfoViewController *ivc = [segue destinationViewController];
        if (_stringText != nil)
            ivc.viewText = _stringText;
    }//end if
}//end prepareForSegue

最佳答案

您正在继续执行哪些操作?你是 performSegueWithIdentifier 方法不应该调用自己,这绝对是你得到两个后退按钮的原因。您是否也将其连接到 Storyboard中?如果您在 Storyboard中设置了转场,您甚至可能根本不需要 performSegueWithIdentifier 调用,然后您只需为每个转场准备好转场。

关于ios - 添加 performSegueWithIdentifier() 调用后,将创建两个不同的转场,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29656566/

相关文章:

ios - 在 iOS 上实现体积图

iPhone OAuth 教程?

xcode - UIAlertController 转到不同的页面(Swift)

ios - UIButton 图像在正常状态下不显示

ios - 快速解析Json数据

ios - SceneKit 中的场景渲染不正确

iphone - 裁剪图像使图片向左旋转

ios - 使用__block变量阻止泄漏

ios - 在 Xcode 中使用预处理器处理命令行选项

ios - 在 Swift 中,当 false 意味着 true