Как вы загружаете прототип ячейки из раскадровки?

Есть ли способ загрузить ячейку прототипа вместе с любыми соединениями IBOutlet, как определено в раскадровке?

Обновление

Я хочу unit test ячейку (UICollectionViewCell для этого матера), поэтому хотел бы загрузить ее за пределы контекста UIViewController.

Эффективно, так же, как вы можете загрузить пользовательский вид из наконечника, указав его владельца файла и установите его IBOutlet (ы).

Ответы

Ответ 1

Изменить: насколько я знаю, невозможно использовать прототип UITableViewCells из раскадровки в любом месте, кроме ViewController, в котором вы его создали.

Я еще не пробовал это с модульными тестами, но вы можете легко добавить свой собственный UITableViewCell в отдельный наконечник.

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

UINib *nib = [UINib nibWithNibName:@"ABCNameOfYourNibCell" bundle:nil];
[self.tableView registerNib:nib forCellReuseIdentifier:@"myCustomCell"];

Затем используйте ячейку, подобную этой, в cellForRowAtIndexPath:

static NSString *CellIdentifier = @"myCustomCell";

ABCNameOfYourNibCell *cell = 
[tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];

Для ваших целей тестирования вы сможете:

ABCNameOfYourNibCell *testCell = 
[[ABCNameOfYourNibCell alloc] initWithStyle: UITableViewCellStyleDefault reuseIdentifier:nil];

Если вам нужно проверить поведение повторного использования, вы должны установить здесь reuseIdentifier и вызвать prepareForReuse в ячейке.

Ответ 2

Обычно вы создаете UITableViewController или UITableView. Затем вы должны создать класс UITableViewCell. После создания класса UITableViewCell перейдите в `UIStoryboard, выберите ячейку:

enter image description here

Затем установите класс UITableViewCell внутри Identity Inspector:

enter image description here

Теперь добавьте элементы в UITableViewCell и соедините их со своим классом

enter image description here

Теперь добавьте CellIdentifier внутри Attributes Inspector:

enter image description here

Не получили ваш UITableViewController или UIViewController, где у вас есть UITableViewDelegate Методы и вызвать вашу клетку, как это (не забудьте #import в UITableViewCell класса в верхней части ViewController:

- (UITableViewCell *)tableView:(UITableView *)tableView 
         cellForRowAtIndexPath:(NSIndexPath *)indexPath {

    static NSString *CellIdentifier = @"MyIdentifier";
    MyCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier 
                                                   forIndexPath:indexPath];

    [cell.label setText:[NSString stringWithFormat:@"My Cell at Row %ld", 
                         (long)indexPath.row]];      
    return cell;
}