我试图让我的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;
}
}