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];
}
}
4

1 回答 1

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];
}
于 2013-08-18T13:15:54.873 回答