放松后执行程序性segue

时间:2014-02-01 21:27:15

标签: ios objective-c storyboard modalviewcontroller uistoryboardsegue

我有两个视图控制器,V1和V2。 V1在故事板中呈现V2与模态segue。然后我有一个放松的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
}

1 个答案:

答案 0 :(得分:0)

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

相关问题