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的主要内容,如果未能解决你的问题,请参考以下文章