2 exit door eXit_door 于 2013.05.30 11:25 提问

UITableView 设置行高度崩溃

在iPhone应用中有四种单元,每个高度都不同。在给每个tableView设置高度的方法崩溃。

-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{
    UITableViewCell *cell = [self.tableView cellForRowAtIndexPath:indexPath];
    NSLog(@"%@", cell);
    if([cell.reuseIdentifier isEqualToString:PastEventWICellIdentifier]){
        return 56;
    }
    if([cell.reuseIdentifier isEqualToString:PastEventWOICellIdentifier]){
        return 56;
    }
    if([cell.reuseIdentifier isEqualToString:EventWICellIdentifier]){
        return 112;
    }
    if([cell.reuseIdentifier isEqualToString:EventWOICellIdentifier]){
        return 112;
    }
    return 56;
}

2个回答

u010778803
u010778803   2013.05.30 11:45
已采纳

不同高度不会崩溃。
崩溃是因为你在heightForRowAtIndexPath 方法中调用 了cellForRowAtIndexPath,导致死循环。。。

建议用其他方式判断高度。

zhanglei5415
zhanglei5415   Rxr 2013.05.30 14:03

原因出在heightForRowAtIndexPath 方法中你使用

UITableViewCell *cell = [self.tableView cellForRowAtIndexPath:indexPath];

来获取uitableviewcell会导致无限循环.而致应用崩溃.
有两种方法可以解决:
1.

self.tableView.delegate=nil;
UITableViewCell *cell = [self.tableView cellForRowAtIndexPath:indexPath];
self.tableView.delegate=self;

2.

UITableViewCell *cell=[self tableView:tableView cellForRowAtIndexPath:indexPath];
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!