Así que estaba haciendo un lector de rss para mi escuela y terminé el código. Ejecuté la prueba y me dio ese error. Aquí está el código al que se refiere:
- (UITableViewCell *)tableView:(UITableView *)tableView
cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell =
[tableView dequeueReusableCellWithIdentifier:CellIdentifier
forIndexPath:indexPath];
if (cell == nil) {
cell =
[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle
reuseIdentifier:CellIdentifier];
}
Aquí está el error en la salida:
2012-10-04 20: 13: 05.356 Reader [4390: c07] * Error de aserción en - [UITableView dequeueReusableCellWithIdentifier: forIndexPath:], /SourceCache/UIKit_Sim/UIKit-2372/UITableView.m:4460 2012-10-04 20: 13: 05.357 Reader [4390: c07] * Finalización de la aplicación debido a la excepción no detectada 'NSInternalInconsistencyException', razón: 'no se puede retirar una celda con identificador Cell - debe registrar una punta o una clase para el identificador o conectar una celda prototipo en un guión gráfico ' * Primera pila de llamadas tiro: (0x1c91012 0x10cee7e 0x1c90e78 0xb64f35 0xc7d14 0x39ff 0xd0f4b 0xd101f 0xb980b 0xca19b 0x6692d 0x10e26b0 0x228dfc0 0x228233c 0x228deaf 0x1058cd 0x4e1a6 0x4ccbf 0x4cbd9 0x4be34 0x4bc6e 0x4ca29 0x4f922 0xf9fec 0x46bc4 0x47311 0x2cf3 0x137b7 0x13da7 0x14fab 0x26315 0x2724b 0x18cf8 0x1becdf9 0x1becad0 0x1c06bf5 0x1c06962 0x1c37bb6 0x1c36f44 0x1c36e1b 0x147da 0x1665c 0x2a02 0x2935 ) libc ++ abi.dylib: terminar llamado lanzando una excepción
y aquí está el código que muestra en la pantalla de error:
int main(int argc, char *argv[])
{
@autoreleasepool {
return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
}
}
¡por favor ayuda!
fuente
Respuestas:
Estás usando el
dequeueReusableCellWithIdentifier:forIndexPath:
método. La documentación para ese método dice esto:No registró una punta o una clase para el identificador de reutilización
"Cell"
.Al mirar su código, parece esperar que regrese el método de eliminación de cola
nil
si no tiene una celda que le proporcione. Necesita usar eldequeueReusableCellWithIdentifier:
para ese comportamiento:Tenga en cuenta que
dequeueReusableCellWithIdentifier:
ydequeueReusableCellWithIdentifier:forIndexPath:
son diferentes métodos. Ver doc para el primero y el segundo .Si desea comprender por qué querría usar alguna vez
dequeueReusableCellWithIdentifier:forIndexPath:
, consulte estas preguntas y respuestas .fuente
dequeueReusableCellWithIdentifer:forIndexPath:
(introducido en iOS6) es una buena mejora, ya que no necesita verificar si la celda es nula. (EntoncesUITableViewController
funciona de manera similar aUICollectionView
) Pero sí, es molesto que este cambio no sea un comentario en la plantilla y que el mensaje de aserción / bloqueo no sea más útil.dequeueReusableCellWithIdentifier:forIndexPath:
cuando debería haber estado usandodequeueReusableCellWithIdentifier:
.Creo que este error se trata de registrar su punta o clase para el identificador.
Para que pueda mantener lo que está haciendo en su función tableView: cellForRowAtIndexPath y simplemente agregue el código a continuación en su viewDidLoad:
Me ha funcionado. Espero que pueda ayudar.
fuente
viewDidLoad
y moviendo esta lógica paraviewDidAppear
arreglarla.Aunque esta pregunta es bastante antigua, existe otra posibilidad: si está utilizando Storyboards, simplemente tiene que configurar CellIdentifier en Storyboard.
Entonces, si su CellIdentifier es "Cell", simplemente configure la propiedad "Identifier":
Asegúrese de limpiar su construcción después de hacerlo. XCode a veces tiene algunos problemas con las actualizaciones de Storyboard
fuente
Identifier
propiedad. ¡Gracias!Tuve el mismo problema reemplazando con
resuelto
fuente
El problema es más probable porque configura personalizado
UITableViewCell
en el guión gráfico pero no usa el guión gráfico para crear una instancia de suUITableViewController
usoUITableViewCell
. Por ejemplo, en MainStoryboard, tiene unaUITableViewController
subclase llamadaMyTableViewController
y tiene una dinámica personalizadaUITableViewCell
llamadaMyTableViewCell
con identificador de identificación "MyCell".Si crea su costumbre
UITableViewController
así:No registrará automáticamente su tableviewcell personalizado para usted. Tienes que registrarlo manualmente.
Pero si usa storyboard para crear instancias
MyTableViewController
, así:¡Qué buena cosa pasa!
UITableViewController
registrará automáticamente su celda de vista de tabla personalizada que defina en el guión gráfico para usted.En su método delegado "cellForRowAtIndexPath", puede crear su celda de vista de tabla de esta manera:
dequeueReusableCellWithIdentifier creará automáticamente una nueva celda para usted si no hay una celda reutilizable disponible en la cola de reciclaje.
¡Entonces has terminado!
fuente
instantiateViewControllerWithIdentifier
usé para iniciar mi viewController me salvó el día!Solo agregaré que Xcode 4.5 incluye el nuevo
dequeueReusableCellWithIdentifier:forIndexPath:
en su código de plantilla predeterminado, un problema potencial para los desarrolladores que esperan el
dequeueReusableCellWithIdentifier:
método más antiguo.fuente
En su guión gráfico, debe configurar el 'Identificador' de su celda prototipo para que sea el mismo que su CellReuseIdentifier "Cell". Entonces no recibirá ese mensaje o necesitará llamar a esa función registerClass:.
fuente
Solución Swift 2.0:
Debe ingresar a su Inspector de atributos y agregar un nombre para su Identificador de celdas:
Luego debe hacer que su identificador coincida con su dequeue de esta manera:
Alternativamente
Si está trabajando con una punta, es posible que deba registrar su clase en su cellForRowAtIndexPath:
La referencia de clase UITableView de Apple dice:
Aquí está el código del marco de Apple Swift 2.0:
fuente
SwitchCell.self
viene?UITableViewCell.self
parece funcionar para mí. Tal vez agregue una nota en la respuestaSi va con celdas estáticas personalizadas, simplemente comente este método:
y dé a las celdas un identificador en "Inspector de atributos" en el guión gráfico.
fuente
Te doy la respuesta tanto en el Objetivo C como en Swift. Antes de eso quiero decir
Entonces agregamos
registerNib:forCellReuseIdentifier: or registerClass:forCellReuseIdentifier:
en el método viewDidLoad debemos registrar la celda
C objetivo
OPCIÓN 1:
OPCION 2:
en el código anterior,
nibWithNibName:@"CustomCell"
dé su nombre de punta en lugar de mi nombre de punta CustomCellRÁPIDO
OPCIÓN 1:
OPCION 2:
en el código de arriba
nibName:"NameInput"
da tu nombre de puntafuente
Trabajando con Swift 3.0:
fuente
Pasé horas anoche averiguando por qué mi tabla generada programáticamente se estrelló en [myTable setDataSource: self]; Estuvo bien comentando y apareciendo una mesa vacía, pero fallaba cada vez que intentaba llegar a la fuente de datos;
Tenía la delegación configurada en el archivo h: @interface myViewController: UIViewController
¡Tenía el código fuente de datos en mi implementación y todavía BOOM !, ¡se bloquea cada vez! GRACIAS a "xxd" (nr 9): ¡agregar esa línea de código lo resolvió para mí! De hecho, estoy iniciando una tabla desde un botón IBAction, así que aquí está mi código completo:
Por cierto: el botón debe estar vinculado como IBAction y como IBOutlet si desea anclar el popover a él.
UIPopoverController * popoverController3 se declara en el archivo H directamente después de @interface entre {}
fuente
FWIW, recibí este mismo error cuando olvidé establecer el identificador de celda en el guión gráfico. Si este es su problema, en el guión gráfico haga clic en la celda de la vista de tabla y configure el identificador de la celda en el editor de atributos. Asegúrese de que el identificador de celda que establezca aquí sea el mismo que
fuente
Tuve el mismo problema, estaba teniendo el mismo error y para mí funcionó así:
Tal vez sea útil para alguien más.
fuente
Configuré todo correctamente en el Storyboard e hice una compilación limpia pero seguí recibiendo el error " debe registrar una punta o una clase para el identificador o conectar una celda prototipo en un storyboard "
Se corrigió el error pero todavía estoy perdido. No estoy usando una 'celda personalizada', solo una vista con una vista de tabla incrustada. He declarado el viewcontroller como delegado y fuente de datos y me aseguré de que el identificador de la celda coincida en el archivo. ¿Que está pasando aqui?
fuente
Esto puede parecer estúpido para algunas personas, pero me atrapó. Estaba recibiendo este error y el problema para mí era que estaba tratando de usar celdas estáticas pero luego agregar dinámicamente más cosas. Si llama a este método, sus celdas deben ser prototipos dinámicos. Seleccione la celda en el guión gráfico y debajo del inspector de atributos, lo primero dice 'Contenido' y debe seleccionar prototipos dinámicos no estáticos.
fuente
Solo un complemento de las respuestas: puede haber un momento en que usted arregle todas las cosas correctamente, pero puede agregar accidentalmente algunas otras IU en usted
.xib
, comoUIButton
: Simplemente elimine la IU adicional, funciona.fuente
Asegúrese de que el identificador CellIdentifier == de la celda en un guión gráfico, ambos nombres son iguales. Espero que esto funcione para ti
fuente
En mi caso, el accidente ocurrió cuando llamé
deselectRowAtIndexPath:
La linea era
[tableView deselectRowAtIndexPath:indexPath animated:YES];
¡Cambiándolo a
[self.tableView deselectRowAtIndexPath:indexPath animated:YES];
FIJO MI PROBLEMA!Espero que esto ayude a alguien
fuente
En Swift, este problema se puede resolver agregando el siguiente código en su
método.
fuente
Me encontré con este error porque el identificador de reutilización de la celda estaba mal; un error de novato pero sucede: 1. Asegura que el identificador de reutilización de la celda no tenga faltas de ortografía o letras faltantes. 2. En la misma línea, no olvide los recuentos de capitalización. 3. Los ceros no son "O" (Ohs)
fuente