/ / Nie je volaný delegát - kakao, kontrolór uiview, delegáti

Delegát nie je povolaný - kakao, uiviewcontroller, delegáti

Mám ovládač kontroly kontaktov, ktorý - vždy, keď jeriadok je vybraný - MessageViewController je otvorený (pomocou pushViewController). ContactsViewController aj MessageViewController sa „registrujú“ na prijímanie správ DatastoreDelegate. Je zvláštne, že po načítaní mojej aplikácie to všetko funguje dobre, ale akonáhle prejdem do ovládača MessageViewController, metódy delegovania na mojich kontaktoch ContactViewController sa už nebudú nazývať. , ale iba správca MessageViewController prijíma správy aj po jednom otvorení.

Má niekto nejakú predstavu, ako to dosiahnuť?

odpovede:

1 pre odpoveď č. 1

V kakau má každý objekt s delegátom ibajeden delegát (kedykoľvek v danom čase). Tento delegát je jediný objekt, ktorý dostane správy delegáta. Neexistuje skutočná predstava, že by boli oba objekty zaregistrované na príjem správ delegáta. „Mám podozrenie, že keď stlačíte MessageViewController, nastaví sa ako delegát Datastore a potom ContactsViewController tieto správy už nikdy neuvidí, pretože nevráti sa.

Neviem, ako je štruktúrovaný váš kód, ale delegáta môžete jednoducho odovzdať vždy, keď radič zmení zobrazenie, takže aktuálnym delegátom je ktorýkoľvek aktívny.

V prípade kakaa, vzor oznamovania (pozriNSNotificationCenter) sa používa, keď objekt potrebuje „vysielať“ informácie do viacerých ďalších objektov. Delegáti sú skutočne tým, čo znejú: objekt, s ktorým sa iný objekt prípadne spolieha, že s ním „spolupracuje“ a poskytuje kľúčové funkcie. Je to intímnejší vzťah ako pozorovateľ oznámenia.