【发布时间】:2014-09-22 05:30:16
【问题描述】:
在我转到目标视图控制器之前,在我的原始视图控制器中,我调用了一个获取我的关键参数的方法,然后我在我的目标视图控制器中设置了关键参数,方法如下。但是,key 参数是在doSomethingToGetKey 方法完成之前设置的,因此传递了一个空值。我想知道是否有办法让第二种方法等待第一种方法完成。
原始视图控制器:
-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{
[self doSomethingToGetKey];
[segue.destinationViewController setKey:_key];
}
-(void)doSomethingToGetKey:(ACAccount *)account{
[_apiObject postReverseOAuthTokenRequest:^(NSString *authenticationHeader) {
APIObject *api = [APIObject APIOSWithAccount:account];
[api verifyCredentialsWithSuccessBlock:^(NSString *username) {
[api postReverseAuthAccessTokenWithAuthenticationHeader:authenticationHeader successBlock:^(NSString *oAuthToken, NSString *oAuthTokenSecret, NSString *userID, NSString *screenName) {
_key = oAuthToken;
_secret = oAuthTokenSecret;
_userId = userID;
} errorBlock:^(NSError *error) {
NSLog(@"ERROR 1, %@", [error localizedDescription]);
exit(1);
}];
} errorBlock:^(NSError *error) {
NSLog(@"ERROR 2: %@",error.description);
exit(1);
}];
} errorBlock:^(NSError *error) {
NSLog(@"ERROR 3: %@",error.description);
exit(1);
}];
};
【问题讨论】:
-
你的 doSomethingToGetKey 是异步的吗?
-
是的,它是异步的
-
您需要更改
doSomethingToGetKey以接受完成时调用的完成块。然后在该完成块内调用[segue.destinationViewController setKey:_key]。 -
你能贴出这个方法的代码吗?
-
是的,刚刚发布了代码。
标签: ios objective-c