2010-07-15 14 views

Antwort

6

UITableView ist nicht wirklich für mehrere Spalten ausgelegt. Sie können jedoch Spalten simulieren, indem Sie eine benutzerdefinierte UITableCell-Klasse erstellen. Erstellen Sie Ihre benutzerdefinierte Zelle im Interface Builder und fügen Sie Elemente für jede Spalte hinzu. Geben Sie jedem Element ein Tag, damit Sie es in Ihrem Controller referenzieren können.

Geben Sie Ihren Controller einen Ausgang die Zelle aus Ihrer Feder zu laden:

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

Dann in der Tabelle cellForRowAtIndexPath Methode Sicht delegiert, diese Werte nach Tag zuweisen.

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

Vielen Dank für Ihre wertvolle Antwort. aber ich brauche als DataGrid wie Matrix Tabellenansicht mit Header und Aufzeichnungen .. – sri

+0

Vielleicht verstehe ich nicht, was Sie suchen, aber Sie könnten leicht diesen Ansatz verwenden, um etwas zu erstellen, das wie eine Excel-Tabelle aussieht. Sie können eine Ansicht zum Abschnitt Header für Ihre Header hinzufügen. Wenn Sie nach einer einfachen Lösung suchen, die automatisch eine Ansicht erstellt, die wie eine Matrix aussieht, die Sie einfach mit Daten füllen können, weiß ich nichts. –

+0

Ich möchte dies für mich selbst replizieren, können Sie näher auf die Art der Klasse, die diese benutzerdefinierte Zelle in IB sein sollte? Damit diese neue Zelle, die Sie für jede Zeile Ihrer Filiale hinzufügen, geladen wird, enthält die MyTableView-NIB eine Tabellenansichtszelle einer benutzerdefinierten Klasse, die von UITableViewCell erbt und über eine MyCell-Steckdose verfügt? Ihre Verwendung von owner: self scheint hier darauf hinzudeuten, dass die geladene Zelle tatsächlich vom Typ UITableViewController ist, was merkwürdig erscheint. –

0

Sie können mehrere UITableViews Seite an Seite verwenden. Das sollte bei benutzerdefinierten Zellen in Ordnung sein. Sie können es also so lange transformieren, bis es wie ein DataGrid aussieht. ;-)

0

Ich habe UIGridView erstellt, in denen eine einzelne UITableViewCell mehr als eine Zelle enthält. Sie können den Quellcode von UIGridView lernen.

Mein Rat ist, es nicht in Ihrem UIViewController zu codieren. Erstellen Sie ein externes Steuerelement und verwenden Sie es in UIViewController ist ein viel besserer Weg.

Oder Sie können einfach verwenden Mine :)