objective c - objective - ¿Cómo cargar una célula prototipo desde un guión gráfico?
objective c documentation (2)
Edición: Hasta donde sé, no es posible usar el prototipo UITableViewCells desde un Storyboard en otro lugar que no sea el ViewController en el que lo creó.
Aún no he probado esto con pruebas unitarias, pero puede colocar fácilmente su UITableViewCell
personalizado en un plumín separado.
Para usarlo en sus controladores de vista, necesita registrar la celda con sus vistas de tabla.
UINib *nib = [UINib nibWithNibName:@"ABCNameOfYourNibCell" bundle:nil];
[self.tableView registerNib:nib forCellReuseIdentifier:@"myCustomCell"];
Luego use la celda como esta en cellForRowAtIndexPath:
static NSString *CellIdentifier = @"myCustomCell";
ABCNameOfYourNibCell *cell =
[tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];
Para tus propósitos de prueba deberías poder ir con:
ABCNameOfYourNibCell *testCell =
[[ABCNameOfYourNibCell alloc] initWithStyle: UITableViewCellStyleDefault reuseIdentifier:nil];
Si necesita probar el comportamiento de reutilización, debe establecer un identificador de reuso aquí y llamar a prepareForReuse
en la celda.
¿Hay una manera de cargar una célula prototipo, junto con cualquier conexión de IBOutlet como se define dentro de un guión gráfico?
Actualizar
Quiero realizar una prueba unitaria de la celda (un UICollectionViewCell para esa materia), por lo tanto me gustaría cargarla fuera de un contexto UIViewController.
Efectivamente, de la misma manera que puede cargar una vista personalizada desde una punta, especificando el propietario de su archivo y tener su IBOutlet (s) establecido.
Normalmente UITableViewController
un UITableViewController
o un UITableView
. Que también debe crear una clase UITableViewCell
. Después de crear la clase UITableViewCell
, vaya a `UIStoryboard, seleccione la celda:
Luego configure la clase UITableViewCell
dentro del Identity Inspector
:
Ahora agregue elementos al UITableViewCell
y conéctelos con su clase
Ahora agregue el CellIdentifier
dentro del Attributes Inspector
:
No UITableViewController
a su UITableViewController
ni a UIViewController
donde tiene los métodos UITableViewDelegate
y llame a su celda de esta forma (no olvide UITableViewCell
clase UITableViewCell
en la parte superior de su 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;
}