TAG

RSS订阅

收藏本站

设为首页

当前位置:主页 > 移动开发 > IOS开发 >

UIRefreshControl使用描述与实现

发布时间:2014-08-30 21:32 类别:IOS开发

ios 6中,UITableViewController已经内置了UIRefreshControl控件。UIRefreshControl目前只能用于UITableViewController,如果用在其他ViewController中,运行时会得到如下错误提示:(即UIRefreshControl只能被UITableViewController管理)
 
2012-06-15 14:34:34.908 DevDivUIRefreshControl[722:10103] *** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'UIRefreshControl may only be managed by a UITableViewController'
*** First throw call stack:
(0x186fd72 0x1066e51 0x186fb4b 0x55a559 0x57238 0x5d482 0x55ad2 0x2ebb 0xeb2a3 0xeb30e 0x10b7e9 0x10b624 0x109aef 0x10999c 0x107adc 0x1082c6 0xecf24 0xed1e0 0xee084 0x5645c 0x5cf31 0x55ad2 0x4131d 0x414f6 0x4168c 0x49871 0x10a90 0x1196a 0x222be 0x22f9f 0x153fd 0x17ccf39 0x17ccc10 0x17e5da5 0x17e5b12 0x1816b46 0x1815ed4 0x1815dab 0x1128f 0x12e71 0x29fd 0x2925)
libc++abi.dylib: terminate called throwing an exception
(lldb)
 
 
UIRefreshControl使用

#import <UIKit/UIKit.h>

 

@interface FreshTableCtrl : UITableViewController<UITableViewDelegateUITableViewDataSource>

{

    int count;

}

@property (nonatomic,strongNSMutableArray *m_array;

@end

 

FreshTableCtrl .m文件代码如下:
 
虽然UITableViewController已经声明了UIRefreshControl,但是貌似还没有初始化,所以需要我们自己初始化。
初始化的时候并不需要给它指定frame,UITableViewController会为我们进行管理。

#import "FreshTableCtrl.h"

 

@interface FreshTableCtrl ()

 

@end

 

@implementation FreshTableCtrl

@synthesize m_array;

- (id)initWithStyle:(UITableViewStyle)style

{

    self = [super initWithStyle:style];

    if (self) {

        // Custom initialization

        

        UIRefreshControl *refresh = [[UIRefreshControl allocinit];

        refresh.tintColor = [UIColor colorWithRed:40.0/255.0 green:120.0/255.0 blue:160.0/255.0 alpha:100];

        refresh.attributedTitle = [[NSAttributedString allocinitWithString:@"下拉刷新"];

        [refresh addTarget:self action:@selector(refreshTableView:) forControlEvents:UIControlEventValueChanged];

        self.refreshControl = refresh;

        

        self.tableView.backgroundColor = [UIColor clearColor];

        self.view.backgroundColor = [UIColor colorWithRed:230.0f/255.0f green:237.0f/255.0f blue:240.0f/255.0f alpha:1.0f];//[UIColor colorWithRed:230.0f/255.0f green:237.0f/255.0f blue:240.0f/255.0f alpha:1.0f];

        self.tableView.separatorStyle = UITableViewCellSeparatorStyleNone;

    }

    return self;

}

 

/*

下拉刷新事件监听
当用户进行下拉刷新操作时,UIRefreshControl 会触发一个UIControlEventValueChanged事件,通过监听这个事件,我们就可以进行类似数据请求的操作了。如下代码:
[self.refreshControl addTarget:self action:@selector(refreshTableView)

*/

 

-(void)refreshTableView:(UIRefreshControl *)refresh

{

    if (refresh.refreshing) {

        refresh.attributedTitle = [[NSAttributedString alloc]initWithString:@"数据刷新..."];

        

        

        [self performSelector:@selector(handleData) withObject:nil afterDelay:1.0f];

        

        [self.tableView reloadData];

        

    }

}

 

-(void)handleData

{

    NSDateFormatter *formatter = [[NSDateFormatter allocinit];

    [formatter setDateFormat:@"MMM d, h:mm:ss a"];

    NSString *lastUpdated = [NSString stringWithFormat:@"最后刷新:%@", [formatter stringFromDate:[NSDate date]]];

    self.refreshControl.attributedTitle = [[NSAttributedString allocinitWithString:lastUpdated];

    

    count++;

    [m_array addObject:[NSString stringWithFormat:@"新增%d数据:",count]];

    

    [self.refreshControl endRefreshing];

    [self.tableView reloadData];

}

 

- (void)viewDidLoad

{

    [super viewDidLoad];

 

    count = 0;

    

    self.m_array = [[NSMutableArray allocinitWithObjects:@"ceshi-1",@"ceshi-1",@"ceshi-1",@"ceshi-1",@"ceshi-1",@"ceshi-1"nil];

}

 

 

 

- (void)didReceiveMemoryWarning

{

    [super didReceiveMemoryWarning];

    // Dispose of any resources that can be recreated.

}

 

#pragma  mark-

#pragma  mark-UITableView Delegate方法

-(float)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath

{

    return 35.0f;

}

 

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section

{

    return [m_array count];

}

 

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath

{

    static NSString *identifier = @"cell";

    UITableViewCell *cell = [[UITableViewCell allocinitWithStyle:UITableViewCellStyleDefault reuseIdentifier:identifier];

    if (cell == NULL)

    {

        cell =(UITableViewCell *) [tableView dequeueReusableCellWithIdentifier:identifier];

    }

    

    UILabel *tmpLabel = [[UILabel allocinitWithFrame:CGRectMake(0032035)];

    tmpLabel.textAlignment = NSTextAlignmentLeft;

    tmpLabel.text = [m_array objectAtIndex:indexPath.row];

    [cell.contentView addSubview:tmpLabel];

    

    return cell;

}

 

#pragma mark - Table view delegate

 

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath

{

    // Navigation logic may go here. Create and push another view controller.

}

 

猜你会喜欢....

Copyright © 2015 www.wahenzan.com 哇!很赞 版权所有 浙ICP备14030256号-1 Power by DedeCms

浙公网安备 33010602005986号

声明:本站所有文章除标明原创外,均来自网络转载,版权归原作者所有,如果有侵犯到您的权益,请联系本站删除 网站管理员:758763728

360网站安全检测平台