2010-05-18 10 views

Respuesta

12

Se puede definir una celda personalizado en IB, que contendrá 3 etiquetas y en función de:

- (UITableViewCell *)tableView:(UITableView *)aTableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { 

     static NSString *DetailCellIdentifier = @"DetailCell"; 

     UITableViewCell *cell = [aTableView dequeueReusableCellWithIdentifier:DetailCellIdentifier]; 

     if (cell == nil) { 
      NSArray *cellObjects = [[NSBundle mainBundle] loadNibNamed:@"DetailCell" owner:self options:nil]; 
      cell = (UITableViewCell*) [cellObjects objectAtIndex:0]; 
     } 

     // setup your cell 
    } 

cuando se define la celda en la IB dan cada etiqueta una etiqueta, por lo que cuando se necesita para poner un texto allí puede recuperarlo con una etiqueta como esta:

 label = (UILabel *)[cell viewWithTag:NAME_TAG]; 
     label.text = myObject.name; 

y repita esto con otras 2 etiquetas. La etiqueta es un número único.

Pon este código en lugar // configurar su comentario de celda

+0

He creado una subclase UIView personalizada denominada como "DetailCell" y agrego tres etiquetas en ella. Agregue el código escrito anteriormente en la tabla de vista de Detalle del empleado Subclase de UIView. Ejecutar, no muestra ninguna etiqueta en tabelView. –

+1

Si lo crea en IB, se supone que debe crear una UITableViewCell, no una UIView.Vea este enlace para crear celdas personalizadas en detalle: http://developer.apple.com/iphone/library/documentation/UserExperience/Conceptual/TableView_iPhone/TableViewCells/TableViewCells.html –

0

Crear una subclase personalizada UIView que contiene, por ejemplo, tres elementos como UILabel subvistas. A continuación, establezca la propiedad contentView de la celda en esta vista personalizada.

0

añadir etiquetas como tres sub viewsinto content.then de células UITableView asignar valores a apprrpriate que por ejemplo:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { 

static NSString *CellIdentifier = @"Cell"; 

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 
if (cell == nil) { 
    cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier] autorelease]; 


} 

//frame should be set accordingly(means should be framed accordingly). 

UILabel *l1=[[UIImageView alloc]initWithFrame:CGRectMake(5, 5, 100,100)]; 

UILabel *l2=[[UILabel alloc]initWithFrame:CGRectMake(110,10,100,80)]; 
UILabel *l3=[[UILabel alloc]initWithFrame:CGRectMake(115,60,100,50)]; 

[cell.contentView addSubview:l1]; 
[cell.contentView addSubview:l2]; 
[cell.contentView addSubview:l3]; 
return cell; 
} 
+0

este no es un buen enfoque para hacer lo necesario, vea la respuesta anterior que es el enfoque correcto para hacer las cosas –

2

He creado UIGridView. Creo que su problema se puede resolver usando la misma técnica.

Puedes obtener el código fuente del UIGridView. El código es realmente corto.

+0

Compilación en iPhone 4 - realmente laggs ... –

+0

¿Cuántas celdas tienes? – Tanin

+0

Conteo celular predeterminado: 4 columnas x 9 filas. Recién compilé un proyecto de muestra descargado al dispositivo, y realmente quedó rezagado. –

14

Creo que la forma correcta de hacerlo es UICollectionView. Comenzó con UITableView y finalmente falló en algún momento debido a un comportamiento inesperado al intentar implementar el desplazamiento tanto de izquierda a derecha como de arriba hacia abajo.

Por favor marque esta entrada impresionante para una completa y actualizada solución: http://www.brightec.co.uk/blog/uicollectionview-using-horizontal-and-vertical-scrolling-sticky-rows-and-columns

resultado será la siguiente:

enter image description here

+1

Mucho mejor que los hacks multi-etiqueta para asegurarse – jjxtra

Cuestiones relacionadas