Quando apro una vista UIV personalizzata da un UITableViewController, come posso chiudere la vista personalizzata e tornare alla vista tabella?

StackOverflow https://stackoverflow.com/questions/1029703

Domanda

Sto usando un UITableViewController per un menu in un gioco. La vista tabella apre un controller di vista per il mio UIView personalizzato che mostra il gioco. Quando il gioco termina, UIView viene notificato (il che in qualche modo sta rovinando i principali MVC) e da lì mi sono quasi perso.

Domande:

  1. Un UIView può comunicare con il suo controller? Come?
  2. Un controller può parlare con quello che l'ha avviato? Come?
  3. Come posso passare con garbo tra tutta questa complicata rete di visualizzazioni e controller?
È stato utile?

Soluzione

  1. Utilizza qui un protocollo delegato. Il tuo UIView di gioco personalizzato può utilizzare una proprietà delegate e chiamare metodi su questo delegato quando si verificano eventi (game over, game in pausa, view closed, ecc.) Ecco un ottimo post sull'uso dei delegati: Come posso creare delegati in Obiettivo- C?

  2. Consiglierei di usare un UINavigationController. Non devi necessariamente mostrare la barra di navigazione, ma se annidi i controller di visualizzazione in un controller di navigazione hai accesso a -pushViewControllerAnimated: e -popViewControllerAnimated: che rendono è davvero facile navigare tra i livelli di controller di visualizzazione nidificati.

  3. Un altro vantaggio di UINavigationController: otterrai una bella animazione delle diapositive quando passi da una vista all'altra.

Esistono altri meccanismi di terze parti che potresti preferire rispetto ai meccanismi UIKit UINavigationController / UIViewController. Dai un'occhiata al progetto Three20 , in particolare la classe TTNavigationCenter.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top