Сбой при установке текста в пользовательскую метку ячейки таблицы - PullRequest
1 голос
/ 21 апреля 2011

Мое приложение падает, когда я хочу установить текст метки, принадлежащей ячейке таблицы. Мой фрагмент кода выглядит следующим образом:

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:simpleTableIdentifier];

if (cell == nil) 
{
    cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:simpleTableIdentifier];
    [cell autorelease];

    CGRect splitMethodLabelRect = CGRectMake(160, 6, 50, 30); 
    UILabel *splitMethodLabel = [[UILabel alloc] initWithFrame:splitMethodLabelRect]; 
    splitMethodLabel.textAlignment = UITextAlignmentLeft; 
    splitMethodLabel.font = [UIFont systemFontOfSize:13]; 
    splitMethodLabel.tag = kSplitMethodTag;
    [cell.contentView addSubview: splitMethodLabel]; 
    [splitMethodLabel release];

}

UILabel *splitMethodName = (UILabel *)[cell.contentView viewWithTag:kSplitMethodTag]; 

//app crashes at this point
splitMethodName.text = @"Test"; 

Кажется, проблема в том, что я задаю текст. Stacktrace ниже:

2011-04-21 15:11:10.820 BillSplitter[3021:707] -[UITableViewCellContentView setText:]: unrecognized selector sent to instance 0x18a680
2011-04-21 15:11:10.829 BillSplitter[3021:707] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[UITableViewCellContentView setText:]: unrecognized selector sent to instance 0x18a680'

Любые советы по этому вопросу очень ценятся!

Zhen

Ответы [ 2 ]

6 голосов
/ 21 апреля 2011

Возможно, проблема связана с тегом , установленным для splitMethodLabel .
Just change the tag value to something else and check if it crashes still.

2 голосов
/ 21 апреля 2011

Ах, проблема в том, что вы добавляете свою собственную метку в ячейку в качестве подпредставления, но нет заданного свойства, которое ссылается на splitMethodName.Метка находится в иерархии представлений ячейки, но у вас нет ссылки для доступа к ней.

Это можно исправить, создав подкласс UITableViewCell и добавив свою метку в качестве свойства.Тогда используйте свой пользовательский класс.Переопределите initWithStyle, передайте параметры в super, затем создайте свою метку, добавьте в качестве подпредставления и присвойте своему свойству.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...