Tabla de subtítulos en IOS7

Estoy intentando agregar un subtítulo a mis celdas de tableview, pero no se muestran. Donde esta el error

¿La fila [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle] está actualizada, también con iOS 7?

Atentamente

Franco


 - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { static NSString *CellIdentifier = @"Cell"; UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath]; if (!cell) { cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier]; } cell.textLabel.text = @"TestA"; cell.detailTextLabel.text = @"TestB"; return cell; } 

Este código:

 if (!cell) { cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier]; } 

nunca se ejecutará porque dequeueReusableCellWithIdentifier: forIndexPath: se garantiza la asignación de una nueva celda.

Desafortunadamente, registerClass:forCellReuseIdentifier: no le permite especificar un UITableViewCellStyle .

Cambiar dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath simplemente dequeueReusableCellWithIdentifier:CellIdentifier . Este método no garantiza que se devolverá una celda. * Si no es así, el código creará una nueva celda con el estilo que desee.


* – (Lo hará si está usando un guión gráfico, como señala rdelmar, pero ese no es el caso aquí).

 - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { UITableViewCell *cell = nil; cell = [tableView dequeueReusableCellWithIdentifier:@"cell"]; if (cell == nil) { cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:@"cell"]; } cell.textLabel.text = @"Title1"; cell.detailTextLabel.text = @"Subtitle 1"; return cell; } 

Tuve un problema similar y ninguna solución en Internet funcionó para mí. Resulta que estaba siendo un idiota. Publicaré mi solución solo en caso de que alguien más experimente un escenario similar.

Estoy asumiendo que está utilizando storyboard , ha creado un prototipo y configurado el estilo para subtítulos

En el esquema del documento de los guiones charts, asegúrese de seleccionar la celda de tipo prototipo y select el subtítulo. Vea image:

introduzca la descripción de la imagen aquí

¡Ahora asegúrese de que el color de la fuente de la label sea de una naturaleza que nos sea visible en su background!

Simplemente subclass UITableViewCell y anule

 - (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier; 

con la primera línea siendo

 [super initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:reuseIdentifier]; 

Y registre su class de celda con la vista de tabla

 [tableView registerClass:[YourCellSubclass class] forCellReuseIdentifier:@"YourCellID"];