Настройка UITableViewCell в Интерфейсном Разработчике - PullRequest
1 голос
/ 28 января 2012

В двух классах я подклассифицировал UITableViewCell для того, чтобы сделать некоторые основные настройки.Я хотел бы использовать Xib-файл, чтобы свести к минимуму количество кода макета пользовательского интерфейса.Я сталкиваюсь со странным исключением:

if (!cell) {
    if (indexPath.row == 0) {
        cell = [[[SearchCellTop alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellIdentifier] autorelease];
        NSArray* objects = [[NSBundle mainBundle] loadNibNamed:@"SearchCellTop" owner:cell options:nil];
        cell = (SearchCellTop*)[objects objectAtIndex:0];
    }
    else {
        cell = [[[SearchCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellIdentifier] autorelease];
        NSArray* objects = [[NSBundle mainBundle] loadNibNamed:@"SearchCell" owner:cell options:nil];
        cell = (SearchCell*)[objects objectAtIndex:0];
    }
}

Кажется, это хорошо работает для загрузки Xibs.Однако, как только я пытаюсь сделать что-то вроде:

if (indexPath.row < [self tableView:tableView numberOfRowsInSection:indexPath.section])
    ((SearchCell*)cell).Product = [products objectAtIndex:indexPath.row];

я получаю - [UIAccessibiltyBundle setProduct:] нераспознанный селектор, отправленный на экземпляр

Все указывает на то, что «ячейка» имеет правильный типОднако я все еще получаю эту ошибку.

1 Ответ

0 голосов
/ 28 января 2012

Из документации разработчика Apple для метода + (BOOL)loadNibNamed:(NSString *)aNibName owner:(id)owner:

владелец

Объект, который должен быть назначен в качестве владельца nib-файла. Если у класса этого объекта есть связанный пакет, то этот пакет ищется для указанного файла пера; в противном случае этот метод выглядит в основном комплекте.

В вашем случае владельцем должно быть ноль (или конкретный пакет, если он связан).

В коде измените вызовы метода loadNibNamed следующим образом:

NSArray* objects = [[NSBundle mainBundle] loadNibNamed:@"SearchCellTop" owner:nil options:nil];

NSArray* objects = [[NSBundle mainBundle] loadNibNamed:@"SearchCell" owner:nil options:nil];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...