2011-11-01 15 views
7

Nel UITableView principale per un RootViewController.Visualizzazione mobile su UITableView in RootViewController

Come posso aggiungere una vista su un TableView RootViewControllers, con la sua posizione relativa allo schermo e non a TableView, quindi non scorre con esso?

Nota: sarà una barra di avanzamento che mostra i nuovi dati per l'avanzamento del download della tabella.

risposta

5

Sarebbe utile se hai postato il tuo codice, ma: si sta presumibilmente aggiungendo la UITableView al vostro RootViewController con qualcosa di simile:

[self.view addSubview:myUITableView]; 

è sufficiente aggiungere il galleggiante vista nello stesso modo (cioè aggiungerlo al tuo controller di visualizzazione, non al tuo UITableView). Se lo aggiungi dopo aver aggiunto la vista tabella, sarà già "sopra" la vista tabella. In caso contrario si può portare al top con qualcosa di simile:

[self.view bringSubviewToFront:myOverlayView]; 

La vista di sovrapposizione dovrebbe sottoclasse UIView, e dovrebbe impostare il proprio backgroundColor-[UIColor clearColor] al fine di rendere più trasparente. Per consentire all'utente di continuare ad interagire con la vista tabella (che presumibilmente si vuole che accada), nella sottoclasse overlay si sostituisce hitTest:withEvent: e si restituisce la vista tabella (invece di restituire self, che è il comportamento predefinito). Questo passerà tutti i tocchi alla vista tabella sottostante.

+3

È possibile impostare userinteractionenabled su no e questo passa tutti gli eventi alla vista sottostante, non è necessario sovrascrivere hitTest – jrturton

+0

@jrturton: sì, è molto più semplice di override di hitTest. – MusiGenesis

+0

Dato che sono nella mia classe RootViewController devo scrivere: '[self.parentViewController.view addSubview: self.myOverlayView];', ma tutto funziona. –

Problemi correlati