2015-01-07 23 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是否能夠將現有單元出列。如果不是,你需要創建一個。無論哪種方式,你然後將想要設置單元格。因此,如果您將設置代碼移到其他位置之外,您應該看到您期望的行爲。