2010-07-15 12 views

risposta

6

UITableView non è realmente progettato per più colonne. Ma puoi simulare le colonne creando una classe UITableCell personalizzata. Crea la tua cella personalizzata in Interface Builder, aggiungendo elementi per ogni colonna. Assegna a ogni elemento un tag in modo da poterlo fare riferimento nel controller.

Dare il controller una presa per caricare il cellulare dal tuo pennino:

@property(nonatomic,retain)IBOutlet UITableViewCell *myCell;

Poi, nel metodo di vostra tabella vista del delegato cellForRowAtIndexPath, assegnare quei valori per tag.

-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { 
    static NSString *cellIdentifier = @"MyCell"; 

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier]; 
    if (cell == nil) { 
    // load cell from nib to controller's IBOutlet 
    [[NSBundle mainBundle] loadNibNamed:@"MyTableCellView" owner:self options:nil]; 
    // assign IBOutlet to cell 
    cell = myCell; 
    self.myCell = nil; 
    } 

    id modelObject = [myModel objectAtIndex:[indexPath.row]]; 

    UILabel *label; 
    label = (UILabel *)[cell viewWithTag:1]; 
    label.text = [modelObject firstField]; 

    label = (UILabel *)[cell viewWithTag:2]; 
    label.text = [modelObject secondField]; 

    label = (UILabel *)[cell viewWithTag:3]; 
    label.text = [modelObject thirdField]; 

    return cell; 
} 
+0

Grazie per la tua preziosa risposta. ma ho bisogno di DataGrid come tabella di matrici vista con intestazione e record .. – sri

+0

Forse non capisco cosa stai cercando, ma potresti facilmente usare questo approccio per creare qualcosa che assomigli ad un tavolo excel. È possibile aggiungere una vista all'intestazione della sezione per le intestazioni. Se stai cercando una soluzione semplice che crei automaticamente una vista simile a una matrice che puoi semplicemente compilare con i dati, non so nulla. –

+0

Mi piacerebbe replicare questo per me stesso, puoi approfondire il tipo di classe che questa cella personalizzata dovrebbe avere in IB? Affinché quella nuova cella venga caricata per ogni riga da mappare alla presa, il NIB MyTableView contiene una cella di visualizzazione tabella di una classe personalizzata che eredita da UITableViewCell e ha una presa MyCell? Il tuo uso del proprietario: auto qui sembra suggerire che la cella caricata sia effettivamente di tipo UITableViewController, che sembra strano. –

0

Si potrebbe utilizzare più lato UITableViews a fianco. Dovrebbe sembrare ok con le celle personalizzate. Quindi puoi trasformarlo fino a sembrare un DataGrid. ;-)

0

ho creato UIGridView in cui un singolo UITableViewCell contiene più di un cellule. È possibile conoscere il codice sorgente di UIGridView.

Il mio consiglio è di non codificare nel vostro UIViewController. Costruire un controllo esterno e usarlo in UIViewController è un modo molto migliore.

Oppure puoi semplicemente usare il mio :)