iOS:重新加载表视图不起作用

时间:2014-02-05 16:48:45

标签: ios uitableview

我在UITableView中显示twitter feed。它正确加载。我添加了一个Bar按钮项(刷新)来刷新表。但是,单击它不会重新加载表。调用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];
}

3 个答案:

答案 0 :(得分:3)

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

只需致电:

[self loadTweets];

而不是

[self.tableView reloadData];

这样:

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

答案 1 :(得分:1)

试试这个比重装数据更优雅。

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

在loadTweets中:

    successBlock:^(NSArray *statuses) {
                                 [self.tableView beginUpdates];

                                  self.twitterFeed = [NSMutableArray arrayWithArray:statuses];

                                  [self.tableView endUpdates];
 }

答案 2 :(得分:1)

试试这个:

//"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");

    }];
}