2013-07-31 4 views
0

Я новичок в разработке приложений и Objective-C. Я пишу простое приложение для еды, в котором есть еда, хранящаяся в массиве с подробностями о еде, названии пищи, времени приготовления и имени файла, которое приводит к картине.Субтитры не отображаются UITableView cell

Я пытаюсь получить субтитры для работы, но он не отображается. Я читал различные другие сообщения и пытался выполнить некоторые из ответов, но никто не работал.

Это мой код, если есть что-то явно неправильное, пожалуйста, дайте мне знать. Спасибо.

-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{ 

    static NSString *CellIdentifier = @"FoodCell"; 
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath]; 
    if (cell == nil){ 
     cell = [[UITableViewCell alloc]initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier]; 
    } 

    Food *current = [foodArray objectAtIndex:indexPath.row]; 


    [cell.textLabel setText:[current name]]; 
    [[cell detailTextLabel] setText:@[current cookTime]]; 
    cell.imageView.image = [UIImage imageNamed:[current fileName]]; 

    return cell; 
} 
+0

Там нет необходимости проверять ячейки на ноль больше, потому что новый метод Dequeue всегда возвращает ячейку, если ваш идентификатор существует в UITableView. – JonahGabriel

ответ

2

Заменить

[[cell detailTextLabel] setText:@[current cookTime]]; 

с

[[cell detailTextLabel] setText:[current cookTime]]; 

Обратите внимание, что это предполагает, что cookTime является NSString. Если это что-то другое, как целое число, представляющее минут, вы могли бы сделать что-то вроде этого:

[[cell detailTextLabel] setText:[NSString stringWithFormat:@"%d minutes", [current cookTime]]]; 

Кроме того, вы можете найти его проще использовать этот формат:

cell.detailTextLabel.text = [NSString stringWithFormat:@"%d minutes", [current cookTime]]; 
+0

Да, извините, когда я скопировал эту строку, это было неправильно с символом «@» перед частью [current cookTime]. Время приготовления - строка, поэтому эта строка [cell detailTextLabel] setText: [current cookTime]]; должно сработать. Но все же это не дает мне то, что я хочу. Субтитры не отображаются. –

+0

Что вы видите на консоли, если вы добавляете 'NSLog ([текущий cookTime]),' прямо перед этой строкой? Показывает, что вы ожидаете? –

+0

Да, он распечатывает правильные времена для каждой еды. –

0

Попробуйте заменить:

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath]; 

с:

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 
+0

Это неверно. Поставка аргумента forIndexPath гарантирует, что ячейка non-nil будет возвращена, если существует идентификатор. Вот что он говорит в заголовочном файле UITableView: - (id) dequeueReusableCellWithIdentifier: (NSString *) идентификатор forIndexPath: (NSIndexPath *) indexPath NS_AVAILABLE_IOS (6_0); // новый метод dequeue гарантирует, что ячейка будет возвращена и изменена правильно, при условии, что идентификатор зарегистрирован – JonahGabriel

0

пытаются использовать

cell.detailTextLabel.text = [current cookTime]; 
Смежные вопросы