【问题标题】:performing programmatic segue after unwind展开后执行程序化转场
【发布时间】:2014-02-25 13:17:06
【问题描述】:

我有两个视图控制器,V1 和 V2。 V1 在情节提要中为 V2 提供了模态转场。然后我有一个放松的 segue,将 V2 解散到 V1。然后调用下面的完成操作。它打印出正确的 NSLog,但是 [self performSegueWithIdentifier:@"viewmessagessegue" sender:self] 没有被启动。当按下 V1 中的按钮时,我使用同一行代码,并且它在该场景中正常工作。我很困惑为什么它没有被调用......

- (IBAction)done:(UIStoryboardSegue *)segue {
    SendToViewController *cc = [segue sourceViewController];
    _users = cc.recipients;
    NSLog(@"users: %@",_users"); // has the correct data
   [self performSegueWithIdentifier:@"viewmessagessegue" sender:self];
    NSLog(@"perform segue...:"); // this gets printed
}

【问题讨论】:

    标签: ios objective-c storyboard modalviewcontroller uistoryboardsegue


    【解决方案1】:

    我对这个答案并不肯定,但我认为当“完成:”被执行时,它实际上并没有在那个类中执行(意思是前一个屏幕的类)。它要么在中间位置执行,要么在调用类中执行(意味着您试图从中放松的屏幕类)。如果这是真的,它将尝试从展开端而不是从 V1 端执行 prepareForSegue:,并且由于可能没有 segue.identifier,它会继续执行,就好像它没有找到一样......请不要把这当作福音......我在这里猜想,但我可能不会离题太远。您可能可以在 V2 prepareForSegue: 中放置一个 NSLog 来检查它。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-03-23
      • 2020-11-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多