我在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];
}
答案 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");
}];
}