IPhone - Který View Controller metody používat

hlasů
3

Snažím se přijít na to, co logika by měla jít do různých metod, jako jsou UIViewController viewDidLoad, viewDidAppear, viewWillAppear, ...

Struktura mé aplikaci je, že mám řadič kořenový názor, že není opravdu mají výhled na jeho vlastní, spíše má řadič kartu zobrazení a spoustu dalších řadičů výhled do něj. Ale v budoucnu může mít načíst ostatní řadiče zobrazení namísto řadič tab bar v závislosti na aplikaci logiky.

Moje hlavní otázka je, co lidé, kteří obvykle dát do viewDidLoad, .... metody.

V současné době I:

viewDidLoad - nastavení řídicí liště a nastavit svůj názor na vlastním názorem pohled regulátoru

viewDidAppear - zkontrolujte, zda má uživatel uloženy přihlašovací údaje, pokud ne - přítomné s přihlášením a pokud ano, login a získat data aplikace pro první záložce

Snažím se přijít na to teď, pokud má logika pro nastavení mé liště regulátor by měl jít do loadView spíše než viewDidLoad.

Jakákoliv pomoc by bylo skvělé. Malé příklady nalezené na webu jsou skvělé, ale nejdou do detailů o tom, jak by měla být větší aplikace strukturovány.

Položena 27/08/2009 v 04:20
zdroj uživatelem
V jiných jazycích...                            


2 odpovědí

hlasů
3

Neměli byste realizovat oba -viewDidLoadi -loadView; které jsou určeny pro různé účely. Pokud vložíte vnitrostátních prováděcích byste měli implementovat -viewDidLoadvykonávat všechny funkce, které je třeba provést po vložení hrotu. Zapojení nahoru tabbar je vhodné tam, pokud jste to ještě neudělali to v NIB.

-loadView by měla být provedena, pokud nechcete použít NIB, a měla by sestavit pohled.

-viewWillAppearse nazývá bezprostředně před přijít na obrazovce. Je to dobré místo pro nastavení připomínky upozornění, aktualizovat své údaje založené na modelu tříd, které se změnily od té doby jste byli naposledy na obrazovce, a jinak dostat své jednat společně, než tě vidí uživatel. Byste neměli provádět žádné animace zde. Nejste na obrazovce; nemůžete animovat. Vidím spoustu animačních závady v důsledku tohoto omylu. Je to druh práce, ale to vypadá divně.

-viewDidAppearJe pojmenována přijde na obrazovce. To je místo, kde budete dělat nějaké vstupní animace (posuvné vytvořit modální, například, ne že byste měli dělat, že velmi často, ale byl jsem jen při pohledu na nějaký kód, který dělal).

-viewWillDisappearje volána těsně předtím, než jdete mimo obrazovku. To je místo, kde si můžete dělat jakákoliv odstupující animace (včetně odebráním Tableview buněk a podobně).

-viewDidDisapparJe pojmenována jste mimo obrazovku (a animace dokončení). Bourat veškeré připomínky, které zde, pokud je to možné uvolnit paměť, jít spát, jak nejlépe umíte.

Dotknu o nastavení a stržení pozorování zde. Jdu do toho hlouběji v View regulátorů a oznámení .

Odpovězeno 27/08/2009 v 04:44
zdroj uživatelem

hlasů
0

viewDidLoadse bude nazývat jednou za život každého UIViewController‚s pohledu. Dáte věci tam, který je třeba nastavit a pracovat před tím, než uživatel začne interakci s názorem.

viewDidAppearse nazývá kdykoli názor se objevil uživateli. To by mohly být volán více než jednou. Příkladem by mohl být kořen obrazovka aplikaci používáte UINavigationControllertlačit a pop hierarchii názorů. Dát věci tam, že byste chtěli udělat pokaždé. Například můžete chtít skrýt UINavigationBarobrazovky kořene, ale ukázat, že ve všech vnořených obrazovkách, takže byste dělat skrývání pruhu zde.

Z tohoto důvodu by si dát svou logiku k nastavení UITabBarControllerin viewDidLoad, protože jen je třeba udělat jednou.

Pokud jde o aplikaci, je nějaký důvod, proč to není jen můžete UITabViewControllerbýt řadič načten delegáta aplikace? Zdá se, že máte úroveň indirection ve vaší aplikaci, které mohou nebo nemusí potřebovat. Je to asi lepší to zjednodušit teď, a refaktorovat později, pokud budete potřebovat něco složitějšího.

Odpovězeno 27/08/2009 v 04:31
zdroj uživatelem

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more