从Unwind segue触发时推送segue不起作用

时间:2014-04-24 00:39:27

标签: objective-c ios7 push segue

所以我有视图控制器A,它以模态方式呈现视图控制器C,它(假设在视图控制器C上完成某些事情)展开回A,传递一些数据,立即通过推送将视图控制器B推送到其NavController上segue,传递来自C的数据。除了最终推进segue没有发生之外,一切似乎都在起作用。这是在视图控制器A中处理Unwind segue的方法。

- (IBAction)done:(UIStoryboardSegue *)segue
{
    NSLog(@"Called");
    GameViewController *vc = (GameViewController *)segue.sourceViewController;
    self.gameToBeShown = vc.game;
    [self performSegueWithIdentifier:@"showNewGame" sender:self];
}

(" showNewGame" segue通过Storyboard设置为从A到B的推送segue,ctrl +从A的文件所有者拖到B。)

我可以从Log验证是否正在调用该方法,但是segue从未发生过。解除回调是否过早以至于手动触发此segue?

2 个答案:

答案 0 :(得分:0)

是的,这是我认为的时间问题。这很脏但是有效:

UIViewController *source = segue.sourceViewController;
[source dismissViewControllerAnimated:YES completion:^{
  // FIXME: Need to trigger this segue...
  dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.25 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
    [self performSegueWithIdentifier:@"One -> Two" sender:@"blah"];
  });
}];

答案 1 :(得分:-1)

您可以在unwind segue / performSegueWithIdentifier: problems

找到答案

仅当您将逻辑从viewWillAppear:移动到viewDidAppear时,此方法才有效: 这种方法的缺点是在转换过程中你会在屏幕上看到一个小故障。