2015-01-07 1 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. Это, если у вас нет ячеек, добавленных в UITableView внутри xib/sotryboard. dequeCell вернет nil, поэтому блок else не будет выполнен, это приведет к пустым показам.

Во-вторых, unrecognized selector означает, что свойство/метод 'radioBoxImgV' не существует на объекте QuizMCQTableViewCell. Это связано с тем, что вы используете один и тот же идентификатор ячейки для обоих типов ячеек, чтобы представление таблицы возвращало ячейку типа QuizMCQTableViewCell. Введите два идентификатора: один для первой ячейки и второй для второго типа ячейки.

В-третьих, если вы используете ARC, удалите autorelease форму alloc/init.

Forth, НИКОГДА КОГДА-ЛИБО ВЕРНУТЬ nil из cellForRowAtIndexPath

+0

Привет , если я использовал другой идентификатор еще разбился я не использую ARC не stroyboard, все сделано программно , что может быть проблема после аварии – Sagar

+0

Получила ответ, я использовал другой идентификатор ячейки, но с таким же NSString – Sagar

+0

Спасибо все, @AndrewMonshizadeh & danypata: - Спасибо – Sagar

0

Причина нет текста в том, что вы помещаете создать код для ячеек внутри пункта else. if (cell == nil) используется для определения того, удалось ли tableView удалить из существующей ячейки. Если нет, вам нужно создать его. В любом случае вы захотите настроить ячейку. Итак, если вы переместите код настройки за пределы else, вы должны увидеть поведение, которое вы ожидаете.