jse*_*g32 0 iphone objective-c nstimer ios uirefreshcontrol
目前,我有一个正在使用的应用程序UIRefreshControl.
我有一些问题但是......
继承我的代码:
- (void)viewDidLoad
{
[super viewDidLoad];
self.searchDisplayController.delegate = self;
UIRefreshControl *refreshControl = [[UIRefreshControl alloc] init];
[refreshControl addTarget:self action:@selector(refresh:) forControlEvents:UIControlEventValueChanged];
[self.rearTableView addSubview:refreshControl];
}
- (void)refresh:(UIRefreshControl *)refreshControl {
[refreshControl beginRefreshing];
[NSTimer scheduledTimerWithTimeInterval:2.0 target:self selector:@selector(endRefresh:) userInfo:nil repeats:NO];
}
- (void)endRefresh:(UIRefreshControl *)refresh
{
[refresh endRefreshing];
}
Run Code Online (Sandbox Code Playgroud)
拉取tableview会初始化timer但是2秒数已经上升...我的应用程序crashes并发送此消息:
*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSCFTimer endRefreshing]: unrecognized selector sent to instance 0x9c093c0'
Run Code Online (Sandbox Code Playgroud)
我很迷惑 :(
出现此问题是因为:
[NSTimer scheduledTimerWithTimeInterval:2.0 target:self selector:@selector(endRefresh:) userInfo:nil repeats:NO];
Run Code Online (Sandbox Code Playgroud)
您将添加endRefresh:为计时器的选择器.所以endRefresh:方法的参数NSTimer不是UIRefreshControl.
实际的方法签名如下所示:
- (void)endRefresh:(NSTimer *)refresh
{
//your code
}
Run Code Online (Sandbox Code Playgroud)
您正在调用该endRefreshing NSTimer对象,这就是崩溃发生的原因.
声明如下:
- (void)endRefresh:(UIRefreshControl *)refresh
Run Code Online (Sandbox Code Playgroud)
只是强制攻击NSTimer对象UIRefreshControl.
它相当于:
- (void)endRefresh:(NSTimer *)timer
{
UIRefreshControl *refresh = (UIRefreshControl *)timer;
[refresh endRefreshing];
}
Run Code Online (Sandbox Code Playgroud)
声明UIRefreshControl为属性并使用它.
改变你的方法,如:
- (void)refresh:(UIRefreshControl *)refreshControl
{
[refreshControl beginRefreshing];
[self performSelector:@selector(endRefresh:) withObject:refreshControl afterDelay:2.0f];
}
- (void)endRefresh:(UIRefreshControl *)refresh
{
[refresh performSelectorOnMainThread:@selector(endRefreshing) withObject:nil waitUntilDone:NO];
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2508 次 |
| 最近记录: |