2010-12-16 9 views
0

Ich versuche 3 verschiedene Tabellenansichten zu implementieren, die 3 verschiedene Informationsfelder laden, In einigen Foren habe ich gelesen, dass ich die .tag verwenden könnte, um die Tabellen zu unterscheiden und die Daten zu laden , ich versuchte den Namen der Tabelle in Identität/Name des xib an meinen Tisch zu ändern,3 Tabellen auf iPad mit anderen Daten

und

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

    static NSString *CellIdentifier = @"Cell"; 

    //---try to get a reusable cell--- 
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 

    //---create new cell if no reusable cell is available--- 
    if (cell == nil) { 
     cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease]; 
    } 

/* 
    //---set the text to display for the cell--- 
    NSString *cellValue = [listOfMovies objectAtIndex:indexPath.row]; 
    cell.textLabel.text = cellValue; */ 

if (tableView.tag == 1) { 
    //Deal with table 1 - contains 5 sections 
    cell.textLabel.text = [array objectAtIndex:indexPath.row]; 
} else if (tableView.tag == 2) { 
    //Deal with table 2 - contains 1 section 
cell.textLabel.text = [array2 objectAtIndex:indexPath.row]; 
} 
// cell.textLabel.text = [array3 objectAtIndex:indexPath.row]; 
else { 
    cell.textLabel.text = [array objectAtIndex:indexPath.row]; 
} 

return cell; 
} 

verwenden Sie den Zelleninhalt zu ändern, um die anderen Array zu zeigen, aber nicht Arbeiten (Totale!) so, Wie definiert man diese .tag für meine Tabellen auch, ich möchte das gleiche für Zeile (Anzahl) und Abschnitte 1 für alle Tabellen, also soll ich sie einfach so lassen ?? Ich habe die 3 Tabellen, die das gleiche Array im Moment zeigen,

vielen Dank!

+0

Wenn ich zum Beispiel der 0 in Tag in der xib (Ansicht/Tag) für jede Tabelle für eine 2 (mein anderes Array zeigen), erhalte ich> Beenden app aufgrund nicht abgefangene Ausnahme nur ändern 'NSRangeException', Grund: '*** - [NSCFArray objectAtIndex:]: index (1) über Grenzen hinaus (1)' – MaKo

Antwort

0

Ähm, habe ich das nicht versucht, aber ich wäre geneigt zu prüfen, jede Tabellenansicht mit ihrer eigenen einzigartigen UITableViewDataSource-Instanz zu assoziieren. So müssen sie nicht alle in derselben Klasse codiert sein und alles wird einfacher. Ich bin mir nicht sicher, wie Sie das zusammenstellen würden, aber es sollte zu schwer sein, um es auszuarbeiten, denke ich.

0

Ich denke, dass Sie Dinge übermäßig komplizieren. In einer meiner Apps habe ich einen Tabellenansicht-Controller für drei Tabellen. Die Schnittstellendefinition ist so etwas wie:

@interface TableViewController : UITableViewController <UIGestureRecognizerDelegate> { 

    IBOutlet UITableView *leftTable; 
    IBOutlet UITableView *centerTable; 
    IBOutlet UITableView *rightTable; 

    ... 

Dann wird in jeder der Delegatmethoden, ich überprüfen, um zu sehen, welche Tabelle es ist, bevor die entsprechende Aktion und die Rückgabe des entsprechenden Ergebnis durchzuführen. Zum Beispiel:

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { 

    if (tableView == leftTable) { 
     return [self.leftItems count]; 
    } else if (tableView == centerTable) { 
     return [self.centerItems count]; 
    } else { 
     return [self.rightItems count]; 
    } 

}