Раскадровка - несколько контроллеров UITableViewController с одной и той же пользовательской ячейкой - PullRequest
5 голосов
/ 29 ноября 2011

Я иногда нахожусь в copy/pasting пользовательских ячейках между UITableViews в моей раскадровке, которая постепенно превращается в кошмар обслуживания (т. Е. Теперь необходимо внести простое изменение в каждую пользовательскую ячейку в нескольких UITableViews).

Можно ли создать одну пользовательскую ячейку в раскадровке или xib файле и затем ссылаться на нее из нескольких UITableViews?Я думаю, что должен быть способ указать NIB имя для static/prototype ячейки, аналогично тому, как вы можете указать NIB имя для UIViewController при редактировании обычного xib.

Кстати ... Я знаю, как сделать это с помощью кода.Я ищу способ сделать это из самого редактора раскадровки.

Ответы [ 2 ]

1 голос
/ 29 ноября 2011

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

0 голосов
/ 05 июня 2012

На самом деле вам не нужно создавать собственный класс.Если вы пишете для версии 4.0 и выше, вы можете использовать UINib для ее создания.Вы также можете кэшировать его для повышения производительности.

UIViewController.h

@property (nonatomic, retain) UINib *cellNib;
@property (nonatomic, retain) IBOutlet MyCustomTableViewCell *customCell;

UIViewController.m

- (void)viewDidLoad
{
    [super viewDidLoad];

    // Cache the tableviewcell nib
    self.cellNib = [UINib nibWithNibName:@"MyCustomTableViewCell" bundle:nil];
}

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

    MyCustomTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
        [self.cellNib instantiateWithOwner:self options:nil];
        cell = customCell;
        self.customCell = nil;
    }
    // Set title and such
}

Не забывайте выпускать его в dealloc, если нетиспользуя ARC

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