我正在使用 XCode 4.2 的故事板功能设计一个 iOS 应用程序。该应用程序有一个登录屏幕,它接受用户名和密码,并有一个登录按钮。按下登录按钮会触发另一个视图控制器的推送序列。但是,我希望序列等到登录成功后再继续下一个视图控制器。
我知道prepareForSegue:sender:但这是我的问题:登录调用是异步的。因此,我无法在那里进行登录。
有什么办法吗?我可以在情节提要中创建一个仅在我想要它时触发的序列(而不是在单击按钮时)?
我正在使用 XCode 4.2 的故事板功能设计一个 iOS 应用程序。该应用程序有一个登录屏幕,它接受用户名和密码,并有一个登录按钮。按下登录按钮会触发另一个视图控制器的推送序列。但是,我希望序列等到登录成功后再继续下一个视图控制器。
我知道prepareForSegue:sender:但这是我的问题:登录调用是异步的。因此,我无法在那里进行登录。
有什么办法吗?我可以在情节提要中创建一个仅在我想要它时触发的序列(而不是在单击按钮时)?
好的,我已经想通了。我已经定义了从 aUIButton到下一个的转场UIViewController。按照这种方式定义,没有办法有条件地执行segue。
我没有将 segue 放在按钮上,而是从 firstUIViewController到 other进行了 segue UIViewController。这定义了 segue,但不关联任何操作。从那里我可以简单地performSegueWithIdentifier:sender:在我想要执行该 segue 时调用(在我的情况下是当异步任务完成时)。
对我来说,这样做的主要好处是 IB 保持了它的结构。
非常感谢@cli_hlt 为我指明了正确的方向(+1)。
我不知道 IB 中是否有办法执行这样的操作(尽管我非常怀疑)所以我建议使用
- (void)performSegueWithIdentifier:(NSString *)identifier sender:(id)sender
当您的异步登录信号成功时,在视图控制器上。
您还可以在 UIStoryBoard 的实例上调用 instantiateViewControllerWithIdentifier。这将返回对故事板中任何点的视图控制器引用。从那里,您可以随心所欲地呈现它,它会加快故事板的流程。