/ / iPhone: UINavigationController po použití odstráni prvý pohľad v zásobníku - iphone, uinavigationcontroller, pop

iPhone: UINavigationController odstrániť prvé zobrazenie v zásobníku po použití - iphone, uinavigationcontroller, pop

iPhone

Mám UINavigationController, ktorý má loginview, ktorý sa objaví po načítaní aplikácie.

Akonáhle používateľ klikne na Prihlásiť, posunieme ďalší pohľad na zásobník a zobrazí sa. Chcem, aby sa používateľ nemohol vrátiť k zobrazeniu prihlásenia.

Ako odstránim loginview zo zásobníka po načítaní ďalšieho zobrazenia?

Poznámka: Je to požiadavka, že jediným kontajnerom aplikácie je UINavigationController

odpovede:

1 pre odpoveď č. 1

Môžete použiť setViewControllers: animated: upraviť zásobník radičov, ale odporúčam vám, aby ste prehodnotili, či skutočne chcete, aby bol radič zobrazenia prihlásenia koreňom vášho navigačného zásobníka. Keď používatelia uvidia radič navigácie, očakávajú, že budú prechádzať hierarchiou obrazoviek hore a dole. usporiadané do stromovej štruktúry. Zmena koreňa tohto stromu trochu podkopáva metaforu.

Zvážte použitie modálnej prezentácie na to, aby ste informovali o tom, že prihlasovacie prostredie nespadá do hlavnej hierarchickej navigačnej štruktúry vašej aplikácie. Tu je niekoľko možností:

A. Začnite na ovládači zobrazenia prihlásenia a prezentujte ovládač navigácie modálne.

Ak sa váš radič zobrazenia prihlásenia vždy chystábyť prvou obrazovkou, ktorú používateľ uvidí, môžete pridať jej pohľad priamo do okna bez navigačného ovládača. Potom, ako sa používateľ prihlási, vytvorte navigačný radič a predložte ho volaním presentModalViewController: animated: z vášho radiča pohľadu prihlásenia.

B. Inicializujte ovládač navigácie s jeho skutočným koreňom a modálne predstavte ovládač zobrazenia prihlásenia.

Túto možnosť by možno stálo za zváženie prihlásenievýzva nie je vždy prvým pohľadom, ktorý používateľ uvidí, najmä ak sa výzva na prihlásenie môže zobraziť v iných kontextoch. Tento prístup som napríklad použil v aplikácii, ktorá umožňuje používateľovi prístup do niektorých sekcií offline alebo anonymne. Výzva na prihlásenie sa zobrazí modálne, keď sa používateľ pokúsi získať prístup k obsahu vyžadujúcemu autentizáciu.


0 pre odpoveď č. 2

Odstráňte tlačidlo späť nastavením nulovej hodnoty backButtonItem na navigačnej položke prihlasovacieho radiča.


0 pre odpoveď č. 3

Vo vyššie uvedenom prípade sa váš kontrolór loginview bude volať root root pre váš UINavigationController

Prečítajte si nižšie Ako odstrániť koreňový radič z UINavigationController

http://starterstep.wordpress.com/2009/03/05/changing-a-uinavigationcontroller%E2%80%99s-root-view-controller/


0 pre odpoveď č. 4

Zistil som, že iba nastavením vlastnosti ViewControllers by to stačilo.

(Na vytváranie aplikácií pre iPhone pomocou MonoTouch používame C # a .NET))

public override void ViewDidAppear (bool animated)
{
NavigationController.ViewControllers = new UIViewController[] { this };
}

0 pre odpoveď č. 5

použite NSUserdefault na nastavenie hodnoty kontroly bool na overenie, aby sa zobrazila prihlasovacia stránka alebo nasledujúca stránka

napríklad zatiaľ čo prihlasovacia stránka u dostane heslo užívateľského mena, pošlite ho na server a u dostanete výsledok ako úspech alebo neúspech

v prípade úspechu potom nastavte Bool v NSuserdefault na áno

a po úspešnom prihlásení stlačte nextview.

ak nabudúce užívateľ príde do vašej aplikácie, musí najskôr skontrolovať NSuserdefault pre túto boolovú hodnotu

podľa toho môže tlačiť nextviewcontroller alebo prihlasovaciu stránku.

to je to.

v nsuserdefault u môžete určiť reťazec pre kľúč namiesto bool

po úspešnom prihlásení sada jePrihlásený na áno

NSUserDefaults *std = [NSUserDefaults standardUserDefaults];

[std setObject:@"yes" forKey:@"isLogined"];

ak nie je nastavené NIE

v pred push push prihlasovacou stránkou stačí skontrolovať, či je prihlásenie áno alebo nie

podľa toho môže tlačiť prihlasovaciu stránku alebo ďalšiu stránku

overiť

[std stringforkey: @ "isLogined"];