12

我正在使用 XCode 4.2 的故事板功能设计一个 iOS 应用程序。该应用程序有一个登录屏幕,它接受用户名和密码,并有一个登录按钮。按下登录按钮会触发另一个视图控制器的推送序列。但是,我希望序列等到登录成功后再继续下一个视图控制器。

我知道prepareForSegue:sender:但这是我的问题:登录调用是异步的。因此,我无法在那里进行登录。

有什么办法吗?我可以在情节提要中创建一个仅在我想要它时触发的序列(而不是在单击按钮时)?

4

3 回答 3

38

好的,我已经想通了。我已经定义了从 aUIButton到下一个的转场UIViewController。按照这种方式定义,没有办法有条件地执行segue。

我没有将 segue 放在按钮上,而是从 firstUIViewController到 other进行了 segue UIViewController。这定义了 segue,但不关联任何操作。从那里我可以简单地performSegueWithIdentifier:sender:在我想要执行该 segue 时调用(在我的情况下是当异步任务完成时)。

对我来说,这样做的主要好处是 IB 保持了它的结构。

非常感谢@cli_hlt 为我指明了正确的方向(+1)。

于 2011-11-21T16:29:53.320 回答
5

我不知道 IB 中是否有办法执行这样的操作(尽管我非常怀疑)所以我建议使用

- (void)performSegueWithIdentifier:(NSString *)identifier sender:(id)sender

当您的异步登录信号成功时,在视图控制器上。

于 2011-11-19T00:58:20.020 回答
1

您还可以在 UIStoryBoard 的实例上调用 instantiateViewControllerWithIdentifier。这将返回对故事板中任何点的视图控制器引用。从那里,您可以随心所欲地呈现它,它会加快故事板的流程。

于 2011-11-30T05:33:07.377 回答