Come visualizzare più colonne in un UITableView?

Voglio visualizzare più colonne in un UITableView.

Per esempio:

TableView

FName LName Age ----- ----- --- Abby Michale 34 

Puoi definire una cella personalizzata in IB, che conterrà 3 etichette e in funzione:

  - (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 } 

quando definisci la cella in IB assegna a ogni etichetta un tag, quindi quando hai bisogno di inserire un testo puoi recuperarlo per tag come questo:

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

e ripeti questo con altre 2 etichette. Il tag è un numero univoco.

Metti invece questo codice // imposta il tuo commento sulla cella

Penso che il modo corretto di farlo sia UICollectionView. Iniziato con UITableView e alla fine non è riuscito a causa di un comportamento imprevisto durante il tentativo di implementare lo scorrimento sia sinistra-destra che su-giù.

Si prega di controllare questo post fantastico per una soluzione completa e aggiornata: http://www.brightec.co.uk/blog/uicollectionview-using-horizontal-and-vertical-scrolling-sticky-rows-and-columns

Il risultato sarà così:

inserisci la descrizione dell'immagine qui

Ho creato UIGridView . Credo che il tuo problema possa essere risolto usando la stessa tecnica.

Puoi imparare il codice sorgente di UIGridView . Il codice è veramente breve.

Crea una sottoclass UIView personalizzata contenente, ad esempio, tre elementi UILabel come subviews. Quindi imposta la proprietà contentView della cella su questa visualizzazione personalizzata.

aggiungi tre etichette come viste secondarie nel contenuto della cella di uitableview, quindi assegna ad essa valori appropriati, ad esempio:

 - (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; } 

Un po ‘tardi alla festa, ma abbiamo aperto il nostro componente di tabella completo:

https://github.com/flexicious/iOSDataGrid

Alcuni screenshot:

http://www.ioscomponents.com/Home/IOSDataGrid

Sentiti libero di usare!