我试图让我的tableView在我的视图控制器中返回多个部分。但是,每当我这样做并最终在节标题中放置文本时,我都会黑屏,但没有错误。但是,向下切换到一个部分,并且在情节提要或代码中未输入标题文本,将正确显示表格视图。我做错什么了吗?

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
    return 2;
}

- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section
{
    if (section == 0)
    {
        return @"Header1";
    }
    else if (section == 1)
    {
        return @"Header2";
    }
    return nil;
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    return 4;
}

-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    long num = indexPath.row;
    UITableViewCell *cell;
    switch (num)
    {
        case 0:
            cell = self.firstCell;
            break;
        case 1:
            cell = self.secondCell;
            break;
        case 2:
            cell = self.thirdCell;
            break;
        case 3:
            cell = self.fourthCell;
            break;
    }
    return cell;
}

最佳答案

您的单元未初始化,因此请首先对其进行初始化。有关更多信息,请参见此代码。

    -(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
    {
      if(indexPath.section == 0)
      {

            static NSString *cellIdentifier = @"Cell";

            UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier];
            if (!cell)
            {
                cell = [[UITableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellIdentifier];
            }
            switch (indexPath.row)
            {
                case 0:
                    cell = self.firstCell;
                    break;
                case 1:
                    cell = self.secondCell;
                    break;
                case 2:
                    cell = self.thirdCell;
                    break;
                case 3:
                    cell = self.fourthCell;
                    break;
            }
            return cell;
}
else
{
        static NSString *cellIdentifier = @"Cell";

        UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier];
        if (!cell)
        {
            cell = [[UITableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellIdentifier];
        }
        switch (indexPath.row)
        {
            case 0:
                cell = self.firstCell;
                break;
            case 1:
                cell = self.secondCell;
                break;
            case 2:
                cell = self.thirdCell;
                break;
            case 3:
                cell = self.fourthCell;
                break;
        }
        return cell;
     }
}

10-07 22:31