iOS4'ten önce, uygulamamın ilk görüntüleme denetleyicisi, viewWillAppear'da bir parola açma/kapama ayarları değişkenini kontrol eder ve eğer ayarlanmışsa, doğru parola girilinceye kadar orada kalacak olan kalıcı bir parola ekranı sunun veya Ana ekran düğmesine basıldı.Bir şifre kodu ekranı için applicationwillenterforeground öğesini kullanma
iOS4 ile, uygulamam arka planda olsaydı, kullanıcıların telefonlarını kullanmak üzere birine teslim etmeleri durumunda uygulama içindeki verilerin kolayca erişilemeyeceğini rahat hissetmelerini isterim.
Uygulama, herhangi bir ekrana (uygulamanın sonuncu olduğu ekrana) dönebileceğinden, UIApplicationWillEnterForegroundNotification öğesini her yerde yerel seçicilere (duplicate enterPasscode yöntemleri) kullanacağımı düşündüm. Yerel ekrana göre itin, ancak daha iyi bir yol olmalı.
Burada ufak bir kavramsal yanlış anlama olabilir. Birisi başka bir yaklaşım önerebilir veya bir sonraki adıma geçebilir. Bunu paylaşılan bir yöntem olarak kullanabilir miyim, ancak itmek için doğru yerel görüntü denetleyicisini hala biliyor musunuz?
Teşekkür
DÜZENLEME/GÜNCELLEME:
Kısa versiyon: O inşaat, ama hala standart bir singleton yarattı
daha iyi bir yol (takdir herhangi bir yardım) ... olabilir olabilir bir görünüm denetleyicisi. içerenPasscodeView.h:
@synthesize viewController;
Ben AppDelegate bu koymak:
UIViewController *viewController;
@property (nonatomic, retain) UIViewController *viewController;
PasscodeView.m içeren
-(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];
}
ve tüm viewDidLoad ardından, her ekrana gittiğimde mevcut görüntü denetleyicisini güncellemek (sadece 2 satır var ama yine de öyle görünüyor) s daha iyi bir yolu):
PasscodeView *passcodeView = [PasscodeView sharedSingleton];
passcodeView.viewController = [[self navigationController] visibleViewController];
Ben applicationWillEnterForeground dan geçerli görünüm denetleyicisi aldık bir yolu olsaydı ama bunu bulamadık - burada herhangi bir yardım hala takdir.
Tutarlılık açısından, bir çizgiyi değiştirdim ve uygulamanın geri kalanıyla eşleşen bir başlık eklemek için bir gezinme çubuğu almak için bir satır ekledim.
UINavigationController *passcodeNavigationController = [[UINavigationController alloc] initWithRootViewController:passcodeInput];
[currentController presentModalViewController: passcodeNavigationController animated:NO];
Başladığım yer burası ancak bir denetleyici denetleyicisine neyin ekleneceğini bilmiyordum - Bunu biraz düşüneceğim ve sonra bir deneyin. –
yukarıdaki düzenlemeleri görün. –
Kavramsal olarak, neyi denediğinizi anlıyorum - her görüntü denetleyiciden ziyade bir şifre ekranı sunun - işe yarayacak gibi görünüyor ama değil. Kopyalanan kodu olduğu gibi (PasscodeInputController EnterPasscode olarak değiştirildi), iyi, hata, hiçbir uyarı oluşturmaz, ancak hiçbir şey ortaya çıkar. Başlangıçta UIWindow'un rootViewController özelliği ile aşina olmadım ama ne olduğunu okuduktan sonra, işe yarayacak gibi görünüyor - başka örnekler bulamadı. Birkaç başka şey denedim - orada bir navcontroller denedim, subview, makeKeyAndVisible denedim ama hiçbir şey. –