我正在开发一个Twitter应用程序,我希望在发送后立即显示推文。我试图使用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];
}
}
答案 0 :(得分:1)
Blaze,你在呈现撰写表后立即重新加载表视图,所以它在那里重新加载表 - 你将完成块传递为nil,因此当用户完成推文时不会发生任何事情。
此外,您需要确保不仅要重新加载表,还要重新加载数组或任何其他作为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];
}