首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >iOS:重新加载表视图不工作

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

Stack Overflow用户
提问于 2014-02-05 16:48:44
回答 3查看 2.3K关注 0票数 0

我在UITableView中显示推特提要。它装得很好。我添加了一个Bar按钮项(刷新)来刷新表。但是,单击它并不会重新加载表。调用onClick函数,但不执行其中的代码。

代码语言:javascript
复制
//"TwitterViewController.h"
#import "ViewController.h"

@interface TwitterViewController : UITableViewController
- (IBAction)refresh:(id)sender;

@end

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

代码语言:javascript
复制
- (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];
}
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-02-05 16:54:34

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

只需打电话:

代码语言:javascript
复制
[self loadTweets];

而不是

代码语言:javascript
复制
[self.tableView reloadData];

因此:

代码语言:javascript
复制
- (IBAction)refresh:(id)sender {
    [self loadTweets];
}
票数 3
EN

Stack Overflow用户

发布于 2014-02-05 16:57:11

尝试一下,它将比重新加载数据更优雅。

代码语言:javascript
复制
- (IBAction)refresh:(id)sender {
     [self loadTweets];
} 

在loadTweets中:

代码语言:javascript
复制
    successBlock:^(NSArray *statuses) {
                                 [self.tableView beginUpdates];

                                  self.twitterFeed = [NSMutableArray arrayWithArray:statuses];

                                  [self.tableView endUpdates];
 }
票数 1
EN

Stack Overflow用户

发布于 2014-02-05 17:08:27

试试这个:

代码语言:javascript
复制
//"TwitterViewController.h"
#import "ViewController.h"

@interface TwitterViewController : UITableViewController
@property (strong, nonatomic) STTwitterAPI *twitter;
- (IBAction)refresh:(id)sender;

@end

TwitterViewController.m

代码语言:javascript
复制
- (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");

    }];
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21583325

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档