Xcode no puede eliminar una celda con identificador

mi trabajo es sobre `UITableView '. Cada vez que ejecuto mi proyecto, aparece este error:

Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'unable to dequeue a cell with identifier Cell1 - must register a nib or a class for the identifier or connect a prototype cell in a storyboard 

Revisé cientos de veces mi identificador de célula en mi storyboard y en mi código son los mismos. Código (código UITableViewController de UITableViewController ):

 - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { static NSString *CellIdentifier = @"Cell1"; UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath]; // Configure the cell... return cell; } 

Imagen de las properties de la celda Vista de tabla: introduzca la descripción de la imagen aquí

UITableViewCell e implementé una subclass de UITableViewCell para mi celular.

¿Alguna idea de por qué esto no funciona?

De cualquier forma (línea de código) para saber qué es el identificador de una celda?

Gracias

Editar: Captura de pantalla de mi generador de interfaz.

IB

Edición 2: Texto de customCell.h

 #import <UIKit/UIKit.h> @interface customCell : UITableViewCell @end 

Aparece un nuevo error cuando ejecuto el proyecto:

 [<choixActiviteViewController 0x7591ac0> setValue:forUndefinedKey:]: this class is not key value coding-compliant for the key Cell1. 

choixActiviteViewController es una subclass de UITableViewController y es la class personalizada de Choix Activite View Controller.

En lugar de:

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

Tratar:

  UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 

Si esto no funciona entonces, también agregue:

  if (cell == nil) { cell = [[customCell alloc] init]; } 

Ok, su problema es que está utilizando Static cells , en lugar de Prototype cells . Simplemente cambie su tipo de contenido UITableView.

Opción de celdas de prototipo

Ok, mi proyecto finalmente funciona. Aparecieron algunos errores sobre cosas que eliminé y ya no puedo encontrar.

Acabo de eliminar todos los TableViewCell. Tuve que crear un nuevo UITableViewCell único con las siguientes properties:

class: customCell

Estilo: básico (pero también funciona con personalizado)

Identificador: Cell1

Gracias por tu ayuda ssantos, Abdullah Shafique y bilobatum.

Si su celda de tabla es una subclass de UITableViewCell, entonces no está utilizando el estilo de celda "Básico". Cambie la configuration de estilo en el inspector de attributes a Personalizado.

Además, asegúrese de que la class en el inspector de identidad de la celda de la tabla esté configurada en su subclass de celda de tabla personalizada.

Supongo que estás usando celdas estáticas. Si lo hace conscientemente, simplemente elimine miles de methods de su file .m:

 - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { } - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { } - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { } 

intente usar la class UITableViewCell lugar de la class UITableViewCell .

 - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { static NSString *CellIdentifier = @"Cell1"; customCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath]; // Configure the cell... return cell; } 

Si está utilizando intencionalmente UITaticViewCells estático, entonces no tiene que implementar los methods de población normales de UITableView (numberOfSectionsInTableView:, tableView:numberOfRowsInSection:, tableView:cellForRowAtIndexPath:).
La UITableView se rellenará automáticamente desde las celdas definidas en su storyboard. Termina utilizando tableView: cellForRowAtIndexPath: para formatear los datos en las celdas. Utiliza [super tableView: cellForRowAtIndexPath:] para get tableViewCell y luego ReuseIdentifier, tags o indexPath para hacer coincidir la celda con los datos que conlleva.

La razón de este problema es muy clara a partir de la exception:

Una solución a este problema es registrar una class para el identificador

En Swift esto se puede hacer de la siguiente manera

 tableView.registerClass(UITableViewCell.classForKeyedArchiver(), forCellReuseIdentifier: "your_reuse_identifier") 

En mi caso, el Guión gráfico donde había definido la ITUableViewCell faltante estaba localizado.

Comenta todo el código en la aplicación: didFinishLaunchingWithOptions (AppDelegate), pero sigue siendo return YES, y vuelve a intentarlo.

Me enfrenté a este problema al presentar el UITableViewController con una celda personalizada de otro control de vista. Como una solución temporal, la instancé desde el guión gráfico y eso resolvió el problema.

 let storyboard = UIStoryboard(name: "Main", bundle: nil) let controller = storyboard.instantiateViewController(withIdentifier: "YourTableViewController") self.present(controller, animated: true, completion: nil)