UITableViewController,代码注册Cell,使

2017-10-27  本文已影响57人  ShenYj

纯代码使用UITableViewController, iOS 8 下在dequeueReusableCellWithIdentifier: forIndexPath:处Crash , iOS 9+无此问题,已经通过代码进行Cell注册

Crash_LOG.png

现解决方案:

  1. 在数据源方法中额外添加注册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;
}
上一篇下一篇

猜你喜欢

热点阅读