2011-11-30 13 views
5

Ho un caso di design strano in cui implementare Ho bisogno di mettere due UITableViews sulla stessa vista. Vorrei solo usare le sezioni, ma ho bisogno di un indice sul secondo tavolo.Scorrimento di due UITableViews insieme

Mi piacerebbe che entrambi scorressero insieme come se fossero in realtà due sezioni della stessa vista tabella. È possibile?

Ecco un mockup di base che illustra il motivo per cui:

mockup

Per quanto mi risulta, non è possibile spostare l'indice. Inoltre, quando aggiungi un indice a una tabella, viene visualizzato sull'intera vista tabella, non solo su una sezione.

Se devo implementare questo come due visualizzazioni di tabella, entrambi devono scorrere come se fossero uno. Se è possibile farlo usando le sezioni, è ancora meglio.

+0

Si prega di chiarire che cosa si intende per "indice la seconda tabella". Non sono convinto che un singolo 'UITableView' non soddisfi le tue esigenze. – SundayMonday

+1

Potrebbe per favore rendere la sua domanda più specifica su quello che stai cercando di fare? Sono sicuro che possiamo trovare una soluzione più semplice che usa solo 1 'UITableView'! – Legolas

risposta

23

Aggiornamento

Dopo aver visto l'aggiornamento la mia risposta vecchio non è molto buona ma lascio la mia risposta precedente per chiunque altro ne faccia richiesta.

Nuova risposta: dipende dal modo in cui si desidera sincronizzare le tabelle.

Se si conosce

  1. cui le cellule sono in top 5
  2. Quanto è alto ogni cella è
  3. L'offset della vista tabella

Quindi è possibile calcolare quale cella è visibile la parte superiore della tabella top 5. È possibile utilizzare queste informazioni per scorrere la tabella inferiore all'indice corretto.


Vecchio risposta

sto con gli altri ragazzi non so perché si vorrebbe o se sto interpretando male ma è abbastanza semplice.

UITableView è una sottoclasse di UIScrollView in modo da poter impostare voi stessi come il UITableViewDelegate e sovrascrivere

- (void)scrollViewDidScroll:(UIScrollView *)scrollView; 
{ 
    UITableView *slaveTable = nil; 

    if (self.table1 == scrollView) { 
     slaveTable = self.table2; 
    } else if (self.table2 == scrollView) { 
     slaveTable = self.table1; 
    } 

    [slaveTable setContentOffset:scrollView.contentOffset]; 
} 

Questo mi dà qualcosa che assomiglia a questo:

enter image description here

La parte superiore UITableView è self.table1 e il fondo è self.table2 se si scorre una delle tabelle, lo scorrimento viene eseguito il mirroring nell'altra tabella.

+0

Funzionerà sicuramente, e questa è in realtà l'opzione migliore. – Macmade

+0

Funziona per me per scorrere in parallelo TableViews posizionate parallelamente per scorrere all'unisono – Krishnan

+0

Funziona perfettamente! – xarly

1

Dal mockup sembra che questo si possa ottenere con un singolo UITableView con due sezioni.

Invece di mantenere due TableViews è possibile mantenere due raccolte (una per ogni sezione). Quindi in cellForRowAtIndexPath scegliere la raccolta da utilizzare in base alla sezione specificata in indexPath.

+0

L'indice apparirà su entrambe le sezioni, non solo sulla seconda sezione. – James

+0

Non penso di capire completamente cosa stai cercando di fare. Si prega di chiarire con un esempio. – SundayMonday

+0

Mi piacerebbe avere un indice sul tavolo, ma solo nella seconda sezione. Come è ora, se aggiungo un indice, appare dove appare (sull'intera tabella). Voglio solo l'indicizzazione nella seconda sezione. – James

0

in rapida di questo codice:

func scrollViewDidScroll(scrollView: UIScrollView) { 
    if tb_time1 == scrollView { 
     tb_time2.contentOffset = tb_time1.contentOffset 
    }else if tb_time2 == scrollView { 
     tb_time1.contentOffset = tb_time2.contentOffset 
    } 
} 
Problemi correlati