La pregunta es simple: ¿cómo se carga personalizado UITableViewCell
desde archivos Xib? Hacerlo le permite usar Interface Builder para diseñar sus celdas. La respuesta aparentemente no es simple debido a problemas de administración de memoria. Este hilo menciona el problema y sugiere una solución, pero es anterior al lanzamiento de NDA y carece de código. Aquí hay un largo hilo que discute el problema sin proporcionar una respuesta definitiva.
Aquí hay un código que he usado:
static NSString *CellIdentifier = @"MyCellIdentifier";
MyCell *cell = (MyCell *)[tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
NSArray *nib = [[NSBundle mainBundle] loadNibNamed:CellIdentifier owner:self options:nil];
cell = (MyCell *)[nib objectAtIndex:0];
}
Para usar este código, cree MyCell.m / .h, una nueva subclase de UITableViewCell
y agregue IBOutlets
los componentes que desee. Luego cree un nuevo archivo "XIB vacío". Abra el archivo Xib en IB, agregue un UITableViewCell
objeto, establezca su identificador en "MyCellIdentifier", y establezca su clase en MyCell y agregue sus componentes. Finalmente, conecte el IBOutlets
a los componentes. Tenga en cuenta que no configuramos el propietario del archivo en IB.
Otros métodos recomiendan configurar el propietario del archivo y advertir sobre pérdidas de memoria si el Xib no se carga a través de una clase de fábrica adicional. Probé lo anterior en Instrumentos / Fugas y no vi pérdidas de memoria.
Entonces, ¿cuál es la forma canónica de cargar celdas desde Xibs? ¿Configuramos el propietario del archivo? ¿Necesitamos una fábrica? Si es así, ¿cómo se ve el código para la fábrica? Si hay varias soluciones, aclaremos los pros y los contras de cada una de ellas ...