自定义 UITabeViewCell 不工作
Custom UITabeViewCell not working
我需要自定义方面的帮助UITableViewCell
我创建了两个自定义单元格,我在其中使用 DTO 检查我的问题类型。
如果它是 MCQ 然后加载 QuizMCQTableViewCell
或者如果它是 MRQ 然后加载 QuizMRQTableViewCell
.
下面是我的代码。
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
if ([[self.currentQuestionDTO type] isEqualToString:@"MCQ"])
{
QuizMCQTableViewCell *customcell = [tableView dequeueReusableCellWithIdentifier:optionCellIdentifier];
if (customcell == nil)
{
customcell = [[[QuizMCQTableViewCell alloc] initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:optionCellIdentifier] autorelease];
}else
{
UIImageView* MRQIV=[[UIImageView alloc] initWithImage:[UIImage imageNamed:@"checkbox.png"]];
customcell.checkBoxImgV.image = MRQIV.image;
customcell.cellTextLbl.text = @"Hello";
}
return customcell;
}
if ([[self.currentQuestionDTO type] isEqualToString:@"MRQ"])
{
QuizMRQTableViewCell *customcell = [tableView dequeueReusableCellWithIdentifier:optionCellIdentifier];
if (customcell == nil)
{
customcell = [[[QuizMRQTableViewCell alloc] initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:optionCellIdentifier] autorelease];
}else
{
UIImageView* MRQIV=[[UIImageView alloc] initWithImage:[UIImage imageNamed:@"radio.png"]];
customcell.radioBoxImgV.image = MRQIV.image;
customcell.cellTextLbl.text = @"Hi";
}
return customcell;
}
return nil;
}
我面临的问题是,
当我的 tableView 加载时,第一个问题类型是 MCQ
所以它适用于第一个单元格,但没有显示任何内容,因为我在 if (customcell == nil)
的 else 循环中编写了代码
所以这是我的第一个问题,为什么不将text设置为hello。
但是当我在 if 循环中编写代码时它起作用了。
我的第二个问题是,
当我的 MCQ
类型的代码在 if (customcell == nil)
中时
当我加载第二个问题类型 MRQ
时,我的应用程序崩溃并提示以下错误
-[QuizMCQTableViewCell radioBoxImgV]: unrecognized selector sent to instance
我做错了什么。
请帮忙。
提前致谢..
第一个问题Question type is MCQ so it goes for first cell, but didn't display anything
。如果您没有在 xib/sotryboard 内的 UITableView
中添加单元格。 dequeCell
将 return nil
因此不会执行 else
块,这将导致显示为空。
其次,unrecognized selector
表示property/method'radioBoxImgV'不存在于QuizMCQTableViewCell
的对象上。这是因为您对两种单元格类型使用相同的单元格标识符,因此 table 视图将 return 类型为 QuizMCQTableViewCell
的单元格。创建两个标识符,一个用于第一个单元格,一个用于第二个单元格类型。
第三,如果您使用的是ARC,请将alloc/init中的autorelease
去掉。
第四,从不 RETURN nil
来自 cellForRowAtIndexPath
没有文本的原因是您将单元格的设置代码放在 else
子句中。 if (cell == nil)
用于确定 tableView
是否能够使现有单元格出列。如果没有,您需要创建一个。无论哪种方式,您都需要设置单元格。因此,如果将设置代码移到 else 之外,您应该会看到预期的行为。
我需要自定义方面的帮助UITableViewCell
我创建了两个自定义单元格,我在其中使用 DTO 检查我的问题类型。
如果它是 MCQ 然后加载 QuizMCQTableViewCell
或者如果它是 MRQ 然后加载 QuizMRQTableViewCell
.
下面是我的代码。
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
if ([[self.currentQuestionDTO type] isEqualToString:@"MCQ"])
{
QuizMCQTableViewCell *customcell = [tableView dequeueReusableCellWithIdentifier:optionCellIdentifier];
if (customcell == nil)
{
customcell = [[[QuizMCQTableViewCell alloc] initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:optionCellIdentifier] autorelease];
}else
{
UIImageView* MRQIV=[[UIImageView alloc] initWithImage:[UIImage imageNamed:@"checkbox.png"]];
customcell.checkBoxImgV.image = MRQIV.image;
customcell.cellTextLbl.text = @"Hello";
}
return customcell;
}
if ([[self.currentQuestionDTO type] isEqualToString:@"MRQ"])
{
QuizMRQTableViewCell *customcell = [tableView dequeueReusableCellWithIdentifier:optionCellIdentifier];
if (customcell == nil)
{
customcell = [[[QuizMRQTableViewCell alloc] initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:optionCellIdentifier] autorelease];
}else
{
UIImageView* MRQIV=[[UIImageView alloc] initWithImage:[UIImage imageNamed:@"radio.png"]];
customcell.radioBoxImgV.image = MRQIV.image;
customcell.cellTextLbl.text = @"Hi";
}
return customcell;
}
return nil;
}
我面临的问题是,
当我的 tableView 加载时,第一个问题类型是 MCQ
所以它适用于第一个单元格,但没有显示任何内容,因为我在 if (customcell == nil)
的 else 循环中编写了代码
所以这是我的第一个问题,为什么不将text设置为hello。
但是当我在 if 循环中编写代码时它起作用了。
我的第二个问题是,
当我的 MCQ
类型的代码在 if (customcell == nil)
中时
当我加载第二个问题类型 MRQ
时,我的应用程序崩溃并提示以下错误
-[QuizMCQTableViewCell radioBoxImgV]: unrecognized selector sent to instance
我做错了什么。 请帮忙。
提前致谢..
第一个问题Question type is MCQ so it goes for first cell, but didn't display anything
。如果您没有在 xib/sotryboard 内的 UITableView
中添加单元格。 dequeCell
将 return nil
因此不会执行 else
块,这将导致显示为空。
其次,unrecognized selector
表示property/method'radioBoxImgV'不存在于QuizMCQTableViewCell
的对象上。这是因为您对两种单元格类型使用相同的单元格标识符,因此 table 视图将 return 类型为 QuizMCQTableViewCell
的单元格。创建两个标识符,一个用于第一个单元格,一个用于第二个单元格类型。
第三,如果您使用的是ARC,请将alloc/init中的autorelease
去掉。
第四,从不 RETURN nil
来自 cellForRowAtIndexPath
没有文本的原因是您将单元格的设置代码放在 else
子句中。 if (cell == nil)
用于确定 tableView
是否能够使现有单元格出列。如果没有,您需要创建一个。无论哪种方式,您都需要设置单元格。因此,如果将设置代码移到 else 之外,您应该会看到预期的行为。