2009-09-12 12 views
10

Ho bisogno di avere due UITableViews su un UIView. Posso farlo funzionare con uno, ecco il codice:Più UITableViews su un UIView

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { 

    return 1; 
} 

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { 
    return [contentOne count]; // sets row count to number of items in array 
} 

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

    static NSString *CellIdentifier = @"Cell"; 

    UITableViewCell *cell = [self.tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 
    if (cell == nil) { 
     cell = [[[UITableViewCell alloc] initWithFrame:CGRectZero reuseIdentifier:CellIdentifier] autorelease]; 
    } 

    NSString *firstValue = [[NSString alloc] initWithFormat: @"Row %i% %", indexPath.row+1 ]; 
    NSString *secondValue = [contentOne objectAtIndex:indexPath.row]; 

    NSString *cellValue = [firstValue stringByAppendingString: secondValue]; // appends two strings 

    [cell.textLabel setText:cellValue]; 



    return cell; 
} 

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { 

} 

Ho provato diversi metodi. Chiunque? Se potessi nominare ogni UITableView con un nome diverso, dovrei farlo ma non mi permetterò di modificare tableView in qualcos'altro senza crash.

+0

Duplicate Domanda Prova la soluzione data in: http://stackoverflow.com/a/11789681/846372 – Soniya

risposta

28

in modo avete bisogno di qualche modo per dire i due tableView e Oltre - si potrebbe o impostare la proprietà "tag" per valori diversi, o di avere una proprietà sul controller della vista che punta a ciascuna vista

@property (nonatomic, retain) IBOutlet UITableView *tableView1; 
@property (nonatomic, retain) IBOutlet UITableView *tableView2; 

poi gancio questi fino a ogni vista in Interface Builder ...

poi nei tuoi metodi di controller di vista si può fare

(NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { 
    if (tableView == self.tableView1) { 
     return 37; 
    } else if (tableView == self.tableView2) { 
     return 19; 
    } else { 
     // shouldn't get here, use an assert to check for this if you'd like 
    } 
} 
+0

ho provato - (NSInteger) numberOfSectionsInTableView: (UITableView *) tableView { \t if (tableView == self.tableOne) { return 1; \t} \t else if (tableView == self.tableTwo) { \t return 1; \t} \t \t else { \t \t return 1; \t \t}} Mi dà l'errore di dichiarazione locale di tableView nasconde esempio –

+0

ce l'hai una variabile di classe di nome tableView? la tua classe è derivata da UITableViewController o qualcos'altro? –

+0

Ho eseguito tutto all'interno di UIView. Non avevo un controller separato per UITableView. Ho appena provato le sezioni ed è molto più facile che provare a creare due UITableViews separate. Sono stato in grado di separare i miei due array in sezioni separate. Grazie per l'aiuto. Non lo capisco –

14

Probabilmente il modo più semplice di I implementare questo è avere due classi di origine dati e delegato, una per ogni vista tabella. Ciò ridurrebbe il numero di occorrenze if (tableview == tableview1) nel codice del controller di visualizzazione.

+1

Potresti fornire un'implementazione di esempio per questo, per favore? – dombesz

+1

ma moltiplicherebbe il numero di delegati e metodi di origine dati da implementare. è uno scenario di dare e avere :) –

Problemi correlati