Mit applicationwillenterforeground für eine passcode-Bildschirm

Vor iOS4, meine app ' s initial view controller würde prüfen, ob ein passcode on/off-Einstellungen variable in viewWillAppear und wenn Sie ein modales passcode-Bildschirm, der würde dort bleiben, bis der richtige passcode eingegeben wurde oder die Home-Taste gedrückt wurde.

Mit iOS4, wenn meine app in den hintergrund, ich möchte, dass der Benutzer sich wohl fühlen, dass die Daten in der app enthalten ist nicht leicht zugänglich, wenn Sie waren zu hand Ihr Telefon, um jemanden zu verwenden.

Da die app zurückgeben könnte, auf jedem Bildschirm (der Bildschirm, die app wurde letzten auf), ich dachte, ich würde verwenden Sie die UIApplicationWillEnterForegroundnotification alle über den Ort mit lokaler Selektoren (doppelte enterPasscode Methoden), die jeweils mit der korrekten view-controller zu schieben, basierend auf dem lokalen Bildschirm, aber es muss einen besseren Weg geben.

Kann ich habe eine leichte begriffliche Missverständnis hier. Kann jemand empfehlen, einen anderen Ansatz oder Stups mich an den nächsten Schritt. Kann ich dies als eine gemeinsame Methode aber noch wissen, die richtigen lokalen view-controller zu schieben?

Dank

EDIT/UPDATE:

Kurze version: Es funktioniert, aber vielleicht gibt es noch einen besseren Weg (jede Hilfe dankbar)...

Ich einen standard geschaffen, der singleton mit einem view-controller.

PasscodeView.h mit:

UIViewController *viewController;
@property (nonatomic, retain) UIViewController *viewController;

PasscodeView.m mit:

@synthesize viewController;

Ich habe dies im AppDelegate:

-(void)applicationWillEnterForeground:(UIApplication*)application {

    PasscodeView *passcodeView = [PasscodeView sharedDataManager];
    UIViewController *currentController =  [passcodeView viewController];
    NSLog(@"%@", currentController);  //testing
    EnterPasscode *passcodeInput = [[EnterPasscode alloc] initWithNibName:@"Passcode" bundle:nil];
    [currentController presentModalViewController:passcodeInput animated:NO];
    [passcodeInput release];
}

und die folgenden in all meinen viewDidLoad, die Aktualisierung der aktuellen Ansicht-controller, als ich ging in jedem Bildschirm (nur 2 Linien aber noch scheint, dass es eine bessere Möglichkeit gibt):

PasscodeView *passcodeView = [PasscodeView sharedSingleton];
passcodeView.viewController = [[self navigationController] visibleViewController];

Ich wünschte, es gäbe eine Möglichkeit zu haben, bekommen Sie die aktuelle view-controller aus applicationWillEnterForeground aber ich konnte ihn nicht finden - jede Hilfe hier noch geschätzt.

Konsistenz, änderte ich eine Zeile Hinzugefügt und eine Zeile erhalten Sie eine Navigationsleiste, um mit dem rest der app und einen Titel.

UINavigationController *passcodeNavigationController = [[UINavigationController alloc] initWithRootViewController:passcodeInput];
[currentController presentModalViewController: passcodeNavigationController animated:NO];
Schreibe einen Kommentar