0

InterfaceBuilder で作成した 2 つの異なる UITableViewCells を表示しようとしていますが、このエラーが発生しています。

Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'UITableView dataSource must return a cell from tableView:cellForRowAtIndexPath:'

ファイル所有者クラスを、表示しようとしている UITableViewController に変更し、IBOutlets などを使用してそれらを接続した 2 つの新しいペン先を作成しました。

エラーはTableView:cellForRowAtIndexPath内で発生し、これはそのクラスの私のメソッドがどのように見えるかです

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *CellIdentifier = @"Cell";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];

    // Configure the cell...
    if(indexPath.section == 0) {
        // Manufactures --->
        if (indexPath.row == 0) {
            cell = nil;
            if (cell == nil) {
                [[NSBundle mainBundle] loadNibNamed:@"CodeSearchTextCell" owner:self options:nil];
                cell = codeSearchTextCell; //Loads tableviewcells with custome xib-cell that I have made in Interface builder
                self.codeSearchTextCell = nil;
            }
            codeTextField.layer.borderColor = [UIColor lightGrayColor].CGColor;
            codeTextField.layer.borderWidth = 0.5f;

            cell.userInteractionEnabled = NO;
        }
        else if  (indexPath.row == 1) {
            cell = nil;
            if (cell == nil) {
                [[NSBundle mainBundle] loadNibNamed:@"CodeSearchCell" owner:self options:nil];
                cell = codeSearchCell; //Loads tableviewcells with custome xib-cell that I have made in Interface builder
                self.codeSearchCell = nil;
            }
            cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator; //adds disclosure indicator
            cell.userInteractionEnabled = YES;
        }
    }
    return cell;
}

何が間違っているのかわかりませんが、セルを返す最後の行にブレークポイントを置くと、値なしで戻ってくることがはっきりとわかります。

どんな助けでも大歓迎です。

4

2 に答える 2

0

この方法で試してみるとよいと思います

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *CellIdentifier = @"Cell";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];

    // Configure the cell...
    if(indexPath.section == 0) {
        // Manufactures --->
        if (indexPath.row == 0) {
            cell = nil;
            if (cell == nil) {
                cell = [[[NSBundle mainBundle] loadNibNamed:@"CodeSearchTextCell" owner:self options:nil] objectAtIndex:0];
            }
            codeTextField.layer.borderColor = [UIColor lightGrayColor].CGColor;
            codeTextField.layer.borderWidth = 0.5f;
            cell.userInteractionEnabled = NO;
        }
        else if  (indexPath.row == 1) {
            cell = nil;
            if (cell == nil) {
                cell = [[[NSBundle mainBundle] loadNibNamed:@"CodeSearchCell" owner:self options:nil] objectAtIndex:0];
            }
            cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator; //adds disclosure indicator
            cell.userInteractionEnabled = YES;
        }
    }
    return cell;
}
于 2013-10-15T04:20:47.390 に答える