2015-01-07 27 views
0

我需要帮助定制UITableViewCell定制UITabeViewCell不工作

我有建立在我使用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) 所以这是我的第一个问题,为什么不把文本设置为你好。 但是,当我在if循环中编写我的代码时它工作。

和我的第二个问题是, 当我为MCQ类型的代码是在if (customcell == nil) 当我加载第二个问题类型MRQ我的应用程序获取故障的说法以下错误

-[QuizMCQTableViewCell radioBoxImgV]: unrecognized selector sent to instance 

什么,我做错了。 请帮忙。

在此先感谢..

回答

0

的第一个问题Question type is MCQ so it goes for first cell, but didn't display anything。如果您没有在xib/sotryboard中的UITableView中添加细胞,那么是不是? dequeCell将返回nil,所以else块将不会执行,这将导致空显示。

二,unrecognized selector表示属性/方法'radioBoxImgV'不存在于QuizMCQTableViewCell的对象上。这是因为您为两种单元格类型使用相同的单元格标识符,所以表格视图将返回类型为QuizMCQTableViewCell的单元格。创建两个标识符,一个用于第一个单元格,一个用于第二个单元格类型。

第三,如果您使用的是ARC,请删除autorelease形式的alloc/init。

第四,永远不退还nilcellForRowAtIndexPath

+0

嗨 如果我用不同的标识符仍然坠毁 我没有使用ARC不stroyboard,所有的编程 做什么可能是背后的崩溃 – Sagar

+0

问题得到了答案, 我用不同的小区标识符,但具有相同的NSString – Sagar

+0

谢谢全部, @AndrewMonshizadeh&danypata: - 谢谢 – Sagar

0

原因没有文字是你把设置代码为else子句中的细胞。 if (cell == nil)用于确定tableView是否能够将现有单元出列。如果不是,你需要创建一个。无论哪种方式,你然后将想要设置单元格。因此,如果您将设置代码移到其他位置之外,您应该看到您期望的行为。