2011-09-15 3 views
7

Ho una vista tabella e ho allegato alla sua tabellaHeaderView a UISegmentedControl. Come posso rendere tableHeaderView corretto in modo che io possa sempre visualizzare UISegmentedControl nella stessa posizione anche quando sto scorrendo la vista tabella?Posso rendere fissa la posizione tableHeaderView di una tabella mentre scorro?

+0

Possibile duplicato: http://stackoverflow.com/questions/7426849/can-not-freez-the-table-header-while-scrolling-the-rows/7427117#7427117 – msgambel

+0

Ho usato una barra degli strumenti sul viewcontroller e metti qualunque cosa lì ... in uno dei miei progetti. – user523234

risposta

7

tableView:ViewForHeaderInSection: è la vostra opzione per raggiungere il vostro compito. Nella tabella semplice questo apparirà in qualche modo come l'app della rubrica con il nome del nome nella sezione, ma si avrà il controllo segmentato

+5

'tableView: viewForHeaderInSection:' consentirà a UITableViewDelegate di restituire viste personalizzate per le intestazioni di sezione, ma queste visualizzazioni * scorreranno * quando il resto della tabella scorre. –

+0

Sì, li vedo scorrere con la parte superiore delle rispettive sezioni nell'app Contatti (e rimangono solo * in alto * quando le righe di quella sezione occupano la parte superiore della vista tabella). Quindi suppongo che la domanda sia se Badescu richiede un'intestazione fissa per sezione o una singola intestazione fissa per l'intera tabella. Sulla base dei tentativi di usare un TableHeaderView, ho pensato che fosse quest'ultimo. (Naturalmente, i due sono quasi equivalenti per un tavolo con solo 1 sezione ...) –

+0

Capisco cosa Basescu non ha bisogno di sezioni, quindi può usare questo approccio per la tabella semplice una singola sezione per intere righe nella tabella . –

1

Suggerirei di posizionare UISegmentedControl in una vista separata sopra UITableView piuttosto che in tableHeaderView. Si potrebbe anche voler impostare yourTable.bounces = NO; in modo da evitare che la vista dell'intestazione rimbalzi quando si arriva in cima alla tabella.

1

Prima abbassare la cornice della tabella (creare spazio sopra a tableview). Quindi durante scrollViewDidscroll, correggere correttamente tableviewheader, in modo che non scorra con esso.

Ecco il riassunto di esso.

0

Per espandere sulla risposta di @ mskw:

È possibile utilizzare l'UITableViewController (tenere le sottigliezze come il supporto UIRefreshControl ed evitare tastiera). Devi solo incorporare la barra degli strumenti in una vista semplice e posizionarla nella tabellaHeaderView. Quindi implementare questo metodo di delega della vista di scorrimento per bloccare.

#pragma mark - UIScrollViewDelegate 

- (void)scrollViewDidScroll:(UIScrollView *)scrollView 
{ 
    CGRect rect = self.toolbarContainerView.frame; 
    rect.origin.y = MIN(0,scrollView.contentOffset.y + scrollView.contentInset.top); 
    self.toolbarContainerView.frame = rect; 
} 

Si noti che se si utilizza anche le intestazioni di sezione si dovrà inviare tali vista dietro la tableHeaderView altrimenti si galleggiare sopra il tableHeaderView.

Problemi correlati