ios - ¿Puedo usar un solo prototipo de celda en varias vistas de tabla?
ios5 uitableview (4)
Tengo dos vistas de tabla diferentes en dos controladores diferentes. Pero las celdas, que necesito mostrar en ellas, parecen idénticas. He creado una célula prototipo en una tabla y subclasificado UiTableViewCell. Ahora, si quiero usar la misma celda en un controlador diferente, ¿cómo puedo usarla?
Si solo importo ese archivo customCell en el nuevo controlador y lo deco usando el mismo identificador dado en el guión gráfico, no funcionará. Dice
Error de aserción en - [UITableView _configureCellForDisplay: forIndexPath:]
La aplicación finalizó debido a la excepción no detectada ''NSInternalInconsistencyException'', motivo: ''UITableView dataSource debe devolver una celda de tableView: cellForRowAtIndexPath:''
Entonces, claramente significa que la célula es nula. Entonces, ¿cómo puedo crear una instancia de la misma celda desde el guión gráfico? ¿Es posible o tengo que crear también un customCell diferente para la nueva tabla?
He usado el mismo UITableViewCell en diferentes aplicaciones. simplemente copie un TableViewCell a la otra aplicación. Es decir, ambas aplicaciones tienen el mismo diseño y tal. Las aplicaciones no pertenecen al mismo espacio de trabajo. La configuración funciona bien, sin problemas ni errores ... simplemente no sé si es una buena práctica.
K .. lo tengo. Ante todo,
No puedo usar una célula prototipo en dos vistas de tabla diferentes. Pero puedo usar la misma subclase tableViewCell en dos vistas de tabla diferentes.
Para lograrlo, solo hay que copiar la celda prototipo de un controlador y pegarla como una celda prototipo de la otra vista de tabla. La clase de la vista de tabla pegada permanece igual. Solo cambia el reuseIdentifier. y usarlo.
Edición: si su celda tiene una IU bastante complicada, entonces tiene más sentido crear un xib separado para la celda. Luego registre programáticamente el xib con la vista de tabla. De esa manera, solo tendrá una copia de la celda y mucho mejor para mantenerla cuando haya cambios en la interfaz de usuario.
Puede usar el mismo prototipo de celda en diferentes controladores de vista, solo necesita sacarlo de la vista de tabla del controlador en el que lo diseñó.
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let viewControllerInWhichCellWasDefined = tabBarController?.viewControllers?[0]
let cell = viewControllerInWhichCellWasDefined.tableView.dequeueReusableCell(withIdentifier: "identifier", for: indexPath)
return cell
}
Si creas una celda personalizada en XIB, debería funcionar bien. Sin embargo, sospecho que el identifier
la célula causó el problema. Intente cambiar el identificador de su celda para cada controlador de vista de tabla.
Si no es así, es posible que desee publicar el código fuente