ユーザーの Twitter ハンドルを取得して、テーブルビューのテキスト フィールドに入力しようとしています。リクエストは正常に完了し、実行ブロックを呼び出しますが、UI の更新には数秒かかります。NSNotifications を使用して UI の変更をトリガーしようとしましたが、それでも UI の更新に遅延がありました。以下は、ACAccountStore から情報を取得するために使用するコードです。テーブルに使用している唯一の特別なクラスは、カスタム UITableViewCell 用です。他の誰かがこれを見ていますか?または、ランタイムの問題を引き起こしている何かが欠けていますか?
- (IBAction)connectTwitter:(id)sender {
UISwitch *sw = (UISwitch *)sender;
if (sw.isOn == NO) {
return;
}
ACAccountStore *account = [[ACAccountStore alloc] init];
ACAccountType *accountType = [account accountTypeWithAccountTypeIdentifier:ACAccountTypeIdentifierTwitter];
__weak MBSuitUpViewController *weakSelf = self;
[account requestAccessToAccountsWithType:accountType options:nil completion:^(BOOL granted, NSError *error) {
if (granted == YES) {
NSArray *arrayOfAccounts = [account accountsWithAccountType:accountType];
if (arrayOfAccounts.count > 0) {
ACAccount *twitterAccount = [arrayOfAccounts lastObject];
NSURL *requestURL = [NSURL URLWithString:@"https://api.twitter.com/1/account/verify_credentials.json"];
SLRequest *user = [SLRequest requestForServiceType:SLServiceTypeTwitter requestMethod:SLRequestMethodGET URL:requestURL parameters:nil];
user.account = twitterAccount;
[user performRequestWithHandler:^(NSData *responseData, NSHTTPURLResponse *urlResponse, NSError *error) {
NSDictionary *json = [NSJSONSerialization JSONObjectWithData:responseData options:kNilOptions error:nil];
[weakSelf twitterDictionaryHandler:json];
weakSelf.userInfo = @{@"name": json[@"name"], @"handle":json[@"screen_name"]};
}];
} else {
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:nil message:@"No Twitter Account Found" delegate:nil cancelButtonTitle:nil otherButtonTitles:@"Okay", nil];
[alert show];
}
} else {
NSLog(@"Permission denied %@", error.localizedDescription);
}
}];
}
- (void)twitterDictionaryHandler:(NSDictionary *)dictionary {
MBSuitUpCell *username = (MBSuitUpCell *)[self.view viewWithTag:2];
username.textField.text = dictionary[@"screen_name"];
NSLog(@"Should update textfield");
}