Просмотр с поддержкой XIB с подклассом

#iphone #objective-c #cocoa-touch

#iPhone #objective-c #cocoa-touch

Вопрос:

У меня есть UITableViewCell, определенный в XIB (с настройкой розеток), и пользовательский класс, установленный в ‘CustomTableViewCell’. Сейчас я ищу подкласс ‘CustomTableViewCell’ с ‘SubclassCustomTableViewCell’, однако я хотел бы использовать тот же XIB (и не нужно переопределять мой вид. Возможно ли это? В настоящее время у меня есть:

   (SubclassCustomTableViewCell *)create
{
    // Create undefined cell.
    id cell = nil;

    // Iterate over NIB and find a matching class.
    NSBundle *bundle = [NSBundle mainBundle];
    NSArray *cells = [bundle loadNibNamed:@"CustomTableViewCell" owner:nil options:nil];
    for (cell in cells) if ([cell isKindOfClass:[self class]]) break;

    // Return cell.
    return cell;
}
  

Но я не могу понять, как заставить его возвращать что-либо, кроме родительского.

Ответ №1:

   (SubclassCustomTableViewCell *)create
{
    // Create undefined cell.
    id cell = nil;

    // Iterate over NIB and find a matching class.
    NSBundle *bundle = [NSBundle mainBundle];
    NSArray *cells = [bundle loadNibNamed:@"CustomTableViewCell" owner:nil options:nil];
    for (cell in cells) if ([cell isKindOfClass:[self class]]) return cell; //change this

    // Return cell.
    return nil; //change this
}
  

не могли бы вы сказать мне, где (SubclassCustomTableViewCell *)create определено, в каком классе

Комментарии:

1. Оно определено в подклассе. Я не уверен, как изменение вызова на потенциально возвращающий nil должно помочь… Я действительно хочу, чтобы он возвращал ячейку табличного представления…

2. да, это не поможет .. но это вернет либо пользовательскую ячейку, либо nil … это не вернет родительскую ячейку. Я добавил return cell; в цикл for. и, пожалуйста, поместите все классы ur

3. Но в файле XIB родительская ячейка задана в качестве класса. Если это выполняется в дочернем устройстве, оно никогда ничего не вернет…