纯代码使用UITableViewController, iOS 8 下在dequeueReusableCellWithIdentifier: forIndexPath:处Crash , iOS 9+无此问题,已经通过代码进行Cell注册
Crash_LOG.png现解决方案:
- 在数据源方法中额外添加注册Cell代码
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
// 关键代码
[tableView registerClass:[JSContactMeCell class] forCellReuseIdentifier:kContactMeReusedIdentifier]; // 新增代码用于修复iOS8 Crash
JSContactMeCell *cell = [tableView dequeueReusableCellWithIdentifier:kContactMeReusedIdentifier forIndexPath:indexPath];
return cell;
}
2.iOS 8使用 dequeueReusableCellWithIdentifier方法获取Cell
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
if (iOS9) {
JSContactMeCell *cell = [tableView dequeueReusableCellWithIdentifier:kContactMeReusedIdentifier forIndexPath:indexPath];
return cell;
}
JSContactMeCell *cell = [tableView dequeueReusableCellWithIdentifier:kContactMeReusedIdentifier];
if (cell == nil) {
cell = [[JSContactMeCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:kContactMeReusedIdentifier];
}
return cell;
}
网友评论