// // SVViewController.m // SVPullToRefreshDemo // // Created by Sam Vermette on 23.04.12. // Copyright (c) 2012 Home. All rights reserved. // #import "SVViewController.h" #import "SVPullToRefresh.h" @interface SVViewController () @property (nonatomic, strong) NSMutableArray *dataSource; @end @implementation SVViewController @synthesize tableView = tableView; - (void)viewDidLoad { [super viewDidLoad]; self.dataSource = [NSMutableArray array]; for(int i=0; i<15; i++) [self.dataSource addObject:[NSDate dateWithTimeIntervalSinceNow:-(i*90)]]; __weak SVViewController *weakSelf = self; // setup pull-to-refresh [self.tableView addPullToRefreshWithActionHandler:^{ int64_t delayInSeconds = 2.0; dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, delayInSeconds * NSEC_PER_SEC); dispatch_after(popTime, dispatch_get_main_queue(), ^(void){ [weakSelf.tableView beginUpdates]; [weakSelf.dataSource insertObject:[NSDate date] atIndex:0]; [weakSelf.tableView insertRowsAtIndexPaths:@[[NSIndexPath indexPathForRow:0 inSection:0]] withRowAnimation:UITableViewRowAnimationBottom]; [weakSelf.tableView endUpdates]; [weakSelf.tableView.pullToRefreshView stopAnimating]; }); }]; // setup infinite scrolling [self.tableView addInfiniteScrollingWithActionHandler:^{ int64_t delayInSeconds = 2.0; dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, delayInSeconds * NSEC_PER_SEC); dispatch_after(popTime, dispatch_get_main_queue(), ^(void){ [weakSelf.tableView beginUpdates]; [weakSelf.dataSource addObject:[weakSelf.dataSource.lastObject dateByAddingTimeInterval:-90]]; [weakSelf.tableView insertRowsAtIndexPaths:@[[NSIndexPath indexPathForRow:weakSelf.dataSource.count-1 inSection:0]] withRowAnimation:UITableViewRowAnimationTop]; [weakSelf.tableView endUpdates]; [weakSelf.tableView.infiniteScrollingView stopAnimating]; }); }]; // trigger the refresh manually at the end of viewDidLoad [tableView triggerPullToRefresh]; } #pragma mark - #pragma mark UITableViewDataSource - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { return 1; } - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { return self.dataSource.count; } - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { static NSString *identifier = @"Cell"; UITableViewCell *cell = [self.tableView dequeueReusableCellWithIdentifier:identifier]; if (cell == nil) cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:identifier]; NSDate *date = [self.dataSource objectAtIndex:indexPath.row]; cell.textLabel.text = [NSDateFormatter localizedStringFromDate:date dateStyle:NSDateFormatterNoStyle timeStyle:NSDateFormatterMediumStyle]; return cell; } @end