iOS:重新加载表格视图不工作

我在UITableView中显示Twitter提要。 它正确加载。 我添加了一个Barbutton项目(刷新)来刷新表格。 但是,单击它不会重新加载表。 onClick函数被调用,但其中的代码不被执行。

//"TwitterViewController.h" #import "ViewController.h" @interface TwitterViewController : UITableViewController - (IBAction)refresh:(id)sender; @end 

这里是我的“TwitterViewController.m”的一部分

 - (void)viewDidLoad { [super viewDidLoad]; [self loadTweets]; } - (void)loadTweets { STTwitterAPI *twitter = [STTwitterAPI twitterAPIAppOnlyWithConsumerKey:@"consumer key" consumerSecret:@"consumer secret"]; [twitter verifyCredentialsWithSuccessBlock:^(NSString *bearerToken) { [twitter getUserTimelineWithScreenName:@"username" successBlock:^(NSArray *statuses) { self.twitterFeed = [NSMutableArray arrayWithArray:statuses]; [self.tableView reloadData]; } errorBlock:^(NSError *error) { NSLog(@"%@", error.debugDescription); }]; } errorBlock:^(NSError *error) { NSLog(@"%@", @"Error"); }]; } - (IBAction)refresh:(id)sender { [self.tableView reloadData]; } 

您需要在重新加载tableview之前重新影响twitterFeed数组中的值,否则数据将会相同。

只需致电:

 [self loadTweets]; 

代替

 [self.tableView reloadData]; 

所以:

 - (IBAction)refresh:(id)sender { [self loadTweets]; } 

试试这将比重新加载数据更优雅。

 - (IBAction)refresh:(id)sender { [self loadTweets]; } 

在loadTweets中:

  successBlock:^(NSArray *statuses) { [self.tableView beginUpdates]; self.twitterFeed = [NSMutableArray arrayWithArray:statuses]; [self.tableView endUpdates]; } 

尝试这个:

 //"TwitterViewController.h" #import "ViewController.h" @interface TwitterViewController : UITableViewController @property (strong, nonatomic) STTwitterAPI *twitter; - (IBAction)refresh:(id)sender; @end 

TwitterViewController.m

 - (void)loadTweets { if (!self.twitter) { self.twitter = [STTwitterAPI twitterAPIAppOnlyWithConsumerKey:@"consumer key" consumerSecret:@"consumer secret"]; } __weak typeof(self) weakSelf = self; [self.twitter verifyCredentialsWithSuccessBlock:^(NSString *bearerToken) { [weakSelf.twitter getUserTimelineWithScreenName:@"username" successBlock:^(NSArray *statuses) { weakSelf.twitterFeed = [NSMutableArray arrayWithArray:statuses]; [weakSelf.tableView reloadData]; } errorBlock:^(NSError *error) { NSLog(@"%@", error.debugDescription); }]; } errorBlock:^(NSError *error) { NSLog(@"%@", @"Error"); }]; }