tableView heightForRowAtIndexPath中的iOS UITableView numberOfRowsInSection给出了BAD ACCESS

时间:2015-07-28 05:27:57

标签: ios objective-c uitableview exc-bad-access

当我在[tableView numberOfRowsInSection:0]下面输入if语句时,我收到了EXC错误访问错误。我正在计算heightForRowAtIndexPath中UITableView的tableView numberOfRowsInSection

我有以下代码为第一部分的最后一行设置高度

-(CGFloat )tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{

        if (indexPath.section==0) {
            NSInteger lastRowIndex = [tableView numberOfRowsInSection:0] - 1;

            if (indexPath.row==lastRowIndex) {
                return 44.0f;

            }else{
                return 100;

            }

        }else{

            return 100;
        }


}

我收到的错误如下图

enter image description here

我没有找到合适的方法

iOS UITableView numberOfRowsInSection BAD ACCESS

- (int) myNumberOfRowsMethod{
    // Here you would usually have some underlying model 
    return [self.myContactsOrWhateverArray count];
}

5 个答案:

答案 0 :(得分:2)

试试这个方法 [self tableView:tableView numberOfRowsInSection:0]代替[tableView numberOfRowsInSection:0]。它工作正常。

答案 1 :(得分:1)

将您的代码更新为以下

-(CGFloat )tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{

        if (indexPath.section==0) {
            NSInteger lastRowIndex = [self numberOfRowsInSection:indexPath.section] - 1;

            if (indexPath.row==lastRowIndex) {
                return 44.0f;

            }else{
                return 100;

            }

        }else{

            return 100;
        }
}

答案 2 :(得分:1)

请尝试使用此功能。 制作一个Global NSinteger firstSectionCount; 然后试试这个。

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{
if (section==0){
    firstSectionCount = [ storeArr count];
    return [ storeArr count]+1;
}else{
    return [ [[itemArr objectAtIndex:section-1]   objectForKey:@"itemList"]count];
}

然后,,,,

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
if (indexPath.section==0) {
    if (indexPath.row==firstSectionCount) {
        return 44.0f;

    }else{
        return 100;

    }
}
else{
      return 100;  
}

希望这会对你有帮助......

答案 3 :(得分:0)

试试这段代码:

-(CGFloat )tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{

        if (indexPath.section==0) {
            long lastRowIndex = [self.yourArray count]-1;

            // other wise use this line
           // long lastRowIndex = [self.yourArray lastObject]-1;

            if (indexPath.row==lastRowIndex) {
                return 44.0f;

            }else{
                return 100;

            }

        }else{

            return 100;
        }
}

因为此numberOfRowsInSection无效heightForRowAtIndexPath委托方法。

答案 4 :(得分:0)

试试这个..

 -(CGFloat )tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{

    if (indexPath.section==0) {
        NSInteger lastRowIndex = yourArray.count - 1; 

        if (indexPath.row==lastRowIndex) {
            return 44.0f;

        }else{
            return 100;

        }

    }else{

        return 100;
    }
}