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ì:
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!