发送后如何显示推文?

时间:2013-08-18 11:42:35

标签: iphone ios twitter

我正在开发一个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];
}
}

1 个答案:

答案 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];
}