2013-08-18 2 views
0

Я работаю над твиттер-приложением, и я хочу сразу отобразить твит после отправки. Я пытался использовать reloadData, но это не сработало. Может кто-нибудь мне помочь? Спасибо!Как отобразить твит после отправки?

Вот мой код:

- (IBAction)postNewTweet:(id)sender { 
if ([SLComposeViewController isAvailableForServiceType:SLServiceTypeTwitter]) 
{ 
    SLComposeViewController *tweetSheet = [SLComposeViewController composeViewControllerForServiceType:SLServiceTypeTwitter]; 
    [tweetSheet setInitialText:@""]; 

    [self presentViewController:tweetSheet animated:YES completion:nil]; 
    dispatch_async(dispatch_get_main_queue(), ^{ 
     [self.tweetTableView reloadData]; 
    }); 

} 
else 
{ 
    UIAlertView *alertView = [[UIAlertView alloc] 
           initWithTitle:@"Sorry" 
           message:@"You can't send a tweet right now, make sure your device has an internet connection and you have at least one Twitter account setup" 
           delegate:self 
           cancelButtonTitle:@"OK" 
           otherButtonTitles:nil]; 
    [alertView show]; 
} 
} 

ответ

1

Blaze, вы перегрузочный вид таблицы сразу после представления создания сообщения листа, поэтому перезагрузить таблицу прямо - и вы передаете блок завершения как ноль, так что ничего произойдет, когда пользователь завершит чириканье.

Кроме того, вы должны быть уверены, что перезагружаете не только таблицу, но и массив или любой другой объект, являющийся источником tweetTableView.

Например:

При вызове твит создания сообщения лист:

[self presentViewController:tweetSheet animated:YES completion:^(SLComposeViewControllerResult result) 
{ 
    dispatch_async(dispatch_get_main_queue(), ^{ 
     [self reloadTweets]; 
    }); 
}]; 

И потом, вы перезагрузить источник чириканье и только потом стол

-(void)reloadTweets 
{ 
    tweetsArray = .... //load the tweets from the internet, and only then reload the table 

    [self.tweetTableView reloadData]; 
}