Использование UITableViewCell Nib внутри UITableView внутри UIViewController - PullRequest
1 голос
/ 19 ноября 2010

Я искал решение этого вопроса в течение нескольких часов, и я не могу найти способ построить UITableViewCell в Интерфейсном Разработчике, связать его действия с родительским UINavigationController, а затем использовать ячейка для отображения информации между двумя отдельными экземплярами UITableView. После нескольких часов исследований я структурировал свои файлы так:

  1. UIViewController, НЕ созданный в Интерфейсном Разработчике, который является моим базовым представлением для всего проекта. Содержит IBAction, который помещает UserInfoController в стек.

  2. UITableViewCell, созданный в Интерфейсном Разработчике, который содержит кнопку, которая при нажатии должна выдвинуть новый UIViewController, назовем его UserInfoController, поверх стека. Владельцем файла является вышеуказанный UIViewController.

  3. UIView, созданный в Интерфейсном Разработчике, который я использую в вышеупомянутом UIViewController. Этот UIView содержит верхний раздел UIView с данными и нижний UITableView, который отображает UITableViewCells. Я хочу сделать так, чтобы при нажатии кнопки в UITableViewCell, отображаемой в этом UIView, он активировал действие в родительском UIViewController.

Я чувствую, что мне здесь чего-то не хватает. Я также хотел бы в конечном итоге создать еще один UIViewController с UIView и UITableView, который также должен использовать UITableViewCell и выполнить действие первого UIViewController. Однако, поскольку я даже не могу заставить это работать для одного из моих представлений, я подожду, пока я разберусь с вышеуказанной проблемой.

EDIT: Мой внутренний инстинкт подсказывает мне, что это проблема с аутлетом. В настоящее время мой UIViewController действует как владелец файла для UIView, который содержит UITableView. UIView также содержит код для UITableViewDelegate и UITableViewDataSource, который использует мой UITableViewCell для отображения соответствующей информации. UITableViewCell - это собственный Nib, но его владельцем файла также является UIViewController. Однако, когда я нажимаю кнопку внутри UITableViewCell, событие регистрируется в UIView, несмотря на то, что там нет выходов. Причина, по которой я хочу, чтобы UITableViewCell представлял собой собственный Nib, заключается в том, что я хочу использовать его повторно для других представлений UIViewController позже.

Я могу нормально просматривать UITableViewCell, но не могу заставить его вести себя правильно. Как я могу связать действие кнопки в моем UITableViewCell не с файлом, содержащим его делегат UITableView и DataSource, а с UIViewController, который его содержит?

Надеюсь, это немного яснее: -D

1 Ответ

0 голосов
/ 19 ноября 2010

Как правило: не надо. Загрузка из перьев намного медленнее, чем просто создание ячеек табличного представления в памяти. (Честно говоря, перья для большинства вещей доставляют больше хлопот, чем того стоят, если вы действительно приступите к разработке под iOS).

Тем не менее, я случайно обнаружил некоторый код, где он это делает.

- (UITableViewCell *)loadCellFromNib:(NSString *)nibName
{
    NSArray *nib = [[NSBundle mainBundle] loadNibNamed:nibName 
                                                 owner:self options:nil];
    UITableViewCell * cell = nil;
    for( NSObject *obj in nib )
    {
        if( [obj isKindOfClass:[UITableViewCell class]] )
        {
            cell = (UITableViewCell*)obj;
            break;
        }
    }
    return cell;
}

Опять же, я бы сказал, что вы просто создаете ячейки таблицы, используя свой собственный подкласс UITableViewCell.

...