Ячейка прототипа не будет отображать содержимое

Я разработал ячейку в раскадровке, затем создал собственный подкласс UITableViewCell (BasicCell) и назначил его ему. Также установите правильные идентификаторы. Я создал розетки пользовательской ячейки в этом классе. Затем в моем подклассе UITableViewController (где у меня есть два типа ячеек-прототипов) содержимое ячеек не будет отображаться. Что я делаю не так?

BasicCell.h

@interface BasicCell : UITableViewCell

@property (strong, nonatomic) IBOutlet UILabel *scorevalue;

@property (strong, nonatomic) IBOutlet UILabel *avgvalue;

@property (strong, nonatomic) IBOutlet UILabel *rankvalue;

@property (strong, nonatomic) IBOutlet UILabel *scorelabel;
@property (strong, nonatomic) IBOutlet UILabel *categorylabel;

@property (strong, nonatomic) IBOutlet UILabel *ranklabel;

@end

TableViewController.m

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
     static NSString *CellIdentifierBasic = @"basic";
     static NSString *CellIdentifierDetailed = @"detailed";

    UITableViewCell *cell;

    if(indexPath.row==0){
        // Create first cell

        cell = [[BasicCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifierBasic];


    }

    else{

        // Create all others

        cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifierDetailed forIndexPath:indexPath];
    }


    // Configure the cell...

    switch ([indexPath row])
    {
        case 0:
        {

            BasicCell *basicCell = (BasicCell *)cell;

            basicCell.scorelabel.text = @"test";
            basicCell.categorylabel.text = @"test";
            basicCell.ranklabel.text = @"test";

            basicCell.scorevalue.text = @"test";
            basicCell.avgvalue.text = @"test";
            basicCell.rankvalue.text = @"test";



        }
    }

person user3211165    schedule 05.08.2014    source источник


Ответы (1)


В вашей раскадровке,

  1. Создайте две ячейки-прототипа.
  2. Измените один из пользовательских классов ячейки прототипа. Установите его BasicCell.
  3. Убедитесь, что вы установили соответствующий идентификатор ячейки для каждого типа ячейки.
  4. Не распределять init, если он indexPath.row == 0, а удалять из очереди с соответствующим идентификатором.

Он должен работать.

Примечание. Вы должны объявить свои IBOutlets слабыми, а не сильными. Представление Cell уже имеет сильный указатель на них. Вы не должны владеть ими.

person limon    schedule 05.08.2014
comment
4. была проблема. Спасибо - person user3211165; 05.08.2014