Как вы загружаете прототип ячейки из раскадровки?
Есть ли способ загрузить ячейку прототипа вместе с любыми соединениями 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;
}