2013-08-25 3 views
0

Пожалуйста, помогите мне с UITableViewCells.Не удается загрузить данные в пользовательских ячейках в UITableView

Я следил за многими учебниками и сайтами, но не решил проблему.

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

1.I есть контроллер представления таблицы:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    static NSString *CellIdentifier = @"Cell"; 
    CustomCell *cell = (CustomCell*)[tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 

if (cell == nil) { 
    NSArray *nib = [NSArray arrayWithArray:[[NSBundle mainBundle] loadNibNamed:@"CustomCell" owner:self options:nil]]; 

    for(id obj in nib) 
    { 
     if([obj isKindOfClass:[UITableViewCell class]]) 
     { 
      cell = (CustomCell *)obj; 
     } 
    }  
} 


cell.label.text = @"hello"; 

return cell; 
} 

Также пытался

NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"CustomCell" owner:self options:nil]; 
     cell = [nib objectAtIndex:0]; 

if(cell==nill)"

2.I создали CustomCell: UITableViewCell только с выходом UILabel , Изменено имя идентификатора CustomCell.xib.

Когда я запускаю это приложение, я получаю такую ​​ошибку:

Terminating app due to uncaught exception 'NSUnknownKeyException', reason: '[<NSObject 0x71627f0> setValue:forUndefinedKey:]: this class 
is not key value coding-compliant for the key label. 

Пожалуйста, помогите мне с этим вопросом, где я буду неправильно.

+0

Вы видели http://stackoverflow.com/q/540345/1480518? –

+0

Да, я пробовал это и получаю ту же ошибку. – user2677941

+0

Почему вы проверяете, является ли это 'UITableViewCell', когда он должен быть« CustomCell »? – Wain

ответ

1

Хорошо, я думаю, что я получил, где вы застрять.

Шаг 1: Отсоедините выход UILabel из файла XIB.

Шаг 2: Перейдите в ваш xib-файл, и вы увидите список своих объектов в левой части файла xib.

Шаг 3: Наведите указатель мыши чуть ниже, где написаны объекты. Вы найдете Custom Cell.

Шаг 4: Нажмите Ctrl и перетащить его на этикетке, и теперь Connect выпускному к этикетке.

Шаг 5: Очистить Ваша программа и Запустить его снова.

Все самое лучшее. Если у вас все еще есть сомнения, я уточню. :)

+0

Да, я получил его сейчас. Я подключил ярлык, щелкнув правой кнопкой мыши. Я сделал это, как сказал, щелкнув правой кнопкой CustomCell. Это сработало. благодаря – user2677941

-1

Почему бы не дать вам ячейку идентификатор и создать экземпляр с помощью dequewithreusableidentifier?

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
static NSString *simpleTableIdentifier = @"Cell"; 


CustomCell *cell = (CustomCell *)[tableView dequeueReusableCellWithIdentifier:simpleTableIdentifier]; 

if (cell == nil) { 
    cell = [[AanbodTableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:simpleTableIdentifier]; 
} 

cell.Label.text [email protected]"Hello" 


return cell; 
} 

я бы также относиться к этому очень хороший учебник http://www.appcoda.com/customize-table-view-cells-for-uitableview/

+0

Да Я также использовал идентификатор ячейки. Тем не менее, проблема не решена. – user2677941

+0

Вы можете проверить правильность выхода на этикетку? –

+0

Да, я считаю, что метка правильно определена: @property (неатомный, слабый) IBOutlet UILabel * label; – user2677941

0

Я думаю, вы должны добавить как это, я надеюсь, что он работает

static NSString *CellIdentifier = @"Cell"; 

    customcellCell *cell = (customcellCell *)[tableView dequeueReusableCellWithIdentifier:CellIdentifier]; <- set your customclass in this line. 

    if (cell == nil) 
    { 
     NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"customviewcell" owner:self options:nil]; 
     cell = [nib objectAtIndex:0]; 
    } 

    cell.label.text = @"hello"; 

    return cell; 
0

Используйте следующим образом:

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

     NSString *contactCellID = [NSString stringWithFormat:@"ContactCell%d%d",indexPath.row,indexPath.section]; 
     contactCell = (ContactListCell *)[tableView dequeueReusableCellWithIdentifier:contactCellID]; 

     if(!contactCell) { 
      contactCell = [[ContactListCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:contactCellID]; 
      contactCellID = nil; 
     } 

     strName = @"First name"; 

     contactCell.lblFirstName.text = [strName capitalizedString]; 

     return contactCell; 
    } 

Для пользовательского сотового файла .h

@interface ContactListCell : UITableViewCell { 

    UILabel *lblFirstName; 
} 

@property (strong, nonatomic) UILabel *lblFirstName; 
@end 

Для пользовательского файла ячейки .m

@implementation ContactListCell 

@synthesize lblFirstName; 

- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier 
{ 
self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]; 
    if (self) { 

    lblFirstName = [[UILabel alloc]initWithFrame:CGRectMake(kxiPadFirstNameCellLandscape, kyiPadFirstNameCellLandscape, kiPadFirstNameCellWidthLandscape, kiPadFirstNameCellHeightLandscape)]; 
       lblFirstName.backgroundColor= [UIColor clearColor]; 
       lblFirstName.numberOfLines = 0; 
       lblFirstName.textColor = kCustomCellFontColor; 
       [self.contentView addSubview:lblFirstName]; 

    } 
    return self; 
} 
- (void)setSelected:(BOOL)selected animated:(BOOL)animated 
{ 
    [super setSelected:selected animated:animated]; 

    // Configure the view for the selected state 
} 

@end