2013-02-13 74 views
0

有我的应用程序使用做清爽ODRefreshcontrol的运动:https://github.com/Sephiroth87/ODRefreshControl如何真正使这个刷新我的表视图?继承人从.m文件代码:拉刷新数据

#import "ThirdViewController.h" 
#import "ODRefreshControl.h" 

@interface ThirdViewController() 

@end 




@implementation ThirdViewController 

@synthesize tableView = _tableView; 

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation 
{ 
return (interfaceOrientation == UIInterfaceOrientationPortrait); 
} 

- (BOOL)shouldAutorotate 
{ 
return NO; 
} 

- (NSUInteger)supportedInterfaceOrientations 
{ 
return UIInterfaceOrientationMaskPortrait; 
} 

-(void)TableView:(UITableView *)TableView didFailLoadWithError:(NSError *)error { 
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Error" message:@"Can't connect. Please check your internet Connection" delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil]; 
[alert show]; 

} 

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil 
{ 
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; 
if (self) { 
    // Custom initialization 
} 
return self; 
} 

- (void)viewDidLoad 
{ 
[super viewDidLoad]; 
ODRefreshControl *refreshControl = [[ODRefreshControl alloc] initInScrollView:self.tableView]; 
[refreshControl addTarget:self action:@selector(dropViewDidBeginRefreshing:) forControlEvents:UIControlEventValueChanged]; 

// Do any additional setup after loading the view. 
[self fetchTweets]; 
self.tableView.dataSource = self; 
self.tableView.delegate = self; 
UIImageView *tempImageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"background.png"]]; 
[tempImageView setFrame:self.tableView.frame]; 

self.tableView.backgroundView = tempImageView; 



} 

- (void)dropViewDidBeginRefreshing:(ODRefreshControl *)refreshControl 
{ 
double delayInSeconds = 2.0; 
dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, delayInSeconds * NSEC_PER_SEC); 
dispatch_after(popTime, dispatch_get_main_queue(), ^(void){ 
    [refreshControl endRefreshing]; 
}); 
} 



- (void)fetchTweets 
{ 
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ 
    NSData* data = [NSData dataWithContentsOfURL: 
        [NSURL URLWithString: @"http://search.twitter.com/search.json?q=from:user"]]; 

    NSError* error; 

    tweets = [NSJSONSerialization JSONObjectWithData:data 
              options:kNilOptions 
               error:&error]; 

    NSLog(@"Tweets %@", tweets); 

    dispatch_async(dispatch_get_main_queue(), ^{ 
     [self.tableView reloadData]; 
    }); 
}); 
} 
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
return 80; 
} 

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section 
{ 
return tweets.count; 
} 



- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
static NSString *CellIdentifier = @"TweetCell"; 

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 
if (cell == nil) { 
    cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier]; 
} 

NSArray *tweetsArray = [tweets valueForKey:@"results"]; 
NSDictionary *tweet = [tweetsArray objectAtIndex:indexPath.row]; 


NSString *text = [tweet objectForKey:@"text"]; 
//NSString *name = [[tweet objectForKey:@"user"] objectForKey:@"name"]; 

cell.textLabel.text = text; 
//cell.detailTextLabel.text = [NSString stringWithFormat:@"by %@", name]; 

return cell; 

} 

-(void)tableView:(UITableView *)tableView didDeselectRowAtIndexPath:(NSIndexPath *)indexPath { 

NSLog(@"Row %d selected", indexPath.row); 
} 


- (void)didReceiveMemoryWarning 
{ 
[super didReceiveMemoryWarning]; 
// Dispose of any resources that can be recreated. 
} 

@end 

我该怎么需要添加以使我的表视图刷新Twitter的饲料?

回答

1

你需要调用fetchTweets方法,同时刷新

- (void)dropViewDidBeginRefreshing:(ODRefreshControl *)refreshControl 
{ 
    double delayInSeconds = 2.0; 
    dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, delayInSeconds * NSEC_PER_SEC); 
    dispatch_after(popTime, dispatch_get_main_queue(), ^(void){ 

     //ADD 
     [self fetchTweets]; 

     [refreshControl endRefreshing]; 
}); 
} 
+0

非常感谢,但是我却管理您的回复之前找出答案字面上2分钟。虽然谢谢! – rblue36 2013-02-13 14:19:15

+0

没问题:))。 – 2013-02-13 14:23:57

+0

还有1件事我无法弄清楚如何改变白色的加载图标的颜色,我有一个黑暗的背景,所以它不能被看到? – rblue36 2013-02-13 14:34:32