prepareForSegue如何运作?

时间:2014-07-05 12:01:05

标签: ios objective-c uiviewcontroller

我很好奇这个方法

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

我在UIViewController.h中找到了这个方法,它是一个常规方法。 我检查一下,它不是委托方法(它不是协议)。

因为UITableViewController从UIViewController扩展,我们可以在我们的自定义类中使用此方法用于任何表视图。

奇怪的是,这种方法的行为类似于委托,它在没有任何调用的情况下触发。 它会在视图进行转换时触发。

据我所知,此行为仅存在于委托中。

UIViewController如何在其子类中调用prepareForSegue方法?

2 个答案:

答案 0 :(得分:3)

prepareForSegue是在ViewControllers之间发生转换时调用的方法。因此,无论何时制作segue,都会强制执行此方法。现在,如果您的主View具有子类View并且您想要从中执行Segue,则可以使用以下函数执行此操作。

[self performSegueWithIdentifier:@"segueIdentifier" sender:self];

在这种情况下,此方法将调用具有与segue对应的指定标识符的转换。无论何时调用此方法,都会在此之后立即调用prepareForSegue,然后发生转换。

有关信息,最好在ViewControllers之间连接segue,而不是直接从视图中的Controls创建segue。有时,在执行Segue之前需要检查一些条件。

希望这有帮助。

答案 1 :(得分:1)

UIViewController的许多其他方法一样,您的子类可以覆盖许多UIViewController方法的默认行为。一些示例包括viewDidLoadviewWillAppear