Segue 没有被执行 ios

Posted

技术标签:

【中文标题】Segue 没有被执行 ios【英文标题】:Segue not being performed ios 【发布时间】:2012-03-21 19:28:52 【问题描述】:

我有一个 ios 应用程序,它允许用户连接到我们的服务器并执行一些任务。它工作得很好,直到我决定抛出一个错误并让它回到以前的视图控制器。我创建了一个带有“segShowError”标识符的segue,它应该被执行并将用户发送回父屏幕。目前,segue 是 Modal,从第一个控制器到第二个控制器也是如此。奇怪的是,我之前在使用 push segue 时遇到了同样的困难,我改用 Modal 来修复它。这是“应该”执行segue的代码。

NSData *data = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error];
if(error != nil)

    NSLog(@"Error was %@",error);
    return;

else if([data length] <= 0)

    NSLog(@"No data received, going back");
    [self performSegueWithIdentifier:@"segShowError" sender:self];

然后我有一个 prepareForSegue 方法,它将确定将什么错误消息发送回父级,但现在只记录一条消息。

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender

    NSLog(@"Preparing for segue");

我的输出

2012-03-21 13:14:39.148 SSPColorImprov[17401:f803] 未收到数据,返回

2012-03-21 13:14:39.149 SSPColorImprov[17401:f803] 准备转场

我认为这两条消息表明正在执行转场,但我可能错了。

没有记录错误,项目中没有警告,也没有抛出异常。有什么想法可能导致问题吗?

【问题讨论】:

我理解正确吗...您希望 segue 关闭模态视图控制器? 基本上是的,但我不知道这是一个选项,但我想这是有道理的 好吧,不要着急,因为你不能用 segue 忽略一个视图。模态呈现的视图需要自行消除。我只是想更好地理解你的问题。 @Canopus 我不一定需要一个 segue 来做这件事,这对我来说是最有意义的方式,但一个控制器自行解散也可以 正确。所以我认为你需要替换 [self performSegueWithIdentifier:@"segShowError" sender:self];与 -dismissViewControllerAnimated:completion: 【参考方案1】:

要关闭模态显示的视图,您需要通过调用来关闭它 - dismissViewControllerAnimated:completion: 而不是使用 segues。例如

// used to be dismissModalViewControllerAnimated: but deprecated in iOS 5
[self dismissViewControllerAnimated:YES completion:nil];

【讨论】:

以上是关于Segue 没有被执行 ios的主要内容,如果未能解决你的问题,请参考以下文章

Segue 没有在 viewController 中执行

没有情节提要的 TableView Cell 的 iOS Swift Segue

IOS:推送segue后导航栏消失

在 ViewDidLoad 上执行 Segue

IOS从标签栏项目执行segue

从按钮执行 segue 时应用程序冻结