joh*_* cs 1 cocoa-touch objective-c uitableview ios
我有一个非常奇怪的错误,我的拉动刷新.我有一个函数刷新我的表的数据.它通过拉动刷新和打开来调用viewWillAppear.同样的功能对后者完全正常,但在拉动刷新时会崩溃.这是我的'重置'功能
-(void)reset{
refreshList = nil;
isFiltered = NO;
currentRoom = nil;
[roomList removeAllObjects];
NSMutableURLRequest *newRequest=[NSMutableURLRequest requestWithURL:
[NSURL URLWithString:@"http://192.168.1.128:8080/DJService/room/list/"]
cachePolicy:NSURLRequestUseProtocolCachePolicy
timeoutInterval:60.0];
[newRequest setHTTPMethod:@"POST"];
refreshList = [[NSURLConnection alloc] initWithRequest:newRequest
delegate:self];
}
Run Code Online (Sandbox Code Playgroud)
现在,当运行拉动刷新时,这就是它的作用.它直接进入该cellForRowAtIndexPath功能并在此行崩溃:
room = [roomList objectAtIndex:indexPath.row];
Run Code Online (Sandbox Code Playgroud)
它崩溃了,因为它roomList是空的,还没有填充.我不明白的是,为什么它还reloadData没有被调用时才会使用这个功能.从上面的代码中,建立一个url连接来获取新数据然后重新加载表,connectionDidFinishLoading但是从不调用该函数,实际上没有调用我的表或URL连接的其他委托函数.它直接cellForRowAtIndexPath尝试加载一个空列表....为什么这样做?
这个完全相同的函数(reset)被调用viewWillAppear并且工作正常.
让事情变得更加混乱的是,只有当我的表中有7个或更多元素(填满我的屏幕)时才会发生此崩溃
保留roomList的缓存,以便您知道您正在更新它并且数据不是最新的.填充屏幕时调用cellForRowAtIndexPath的原因是因为屏幕外的单元格出列.我不会离开桌子没有数据拉.此外,如果您没有写拉动刷新控制器,它可能正在调用reloadTable.
| 归档时间: |
|
| 查看次数: |
641 次 |
| 最近记录: |