2013-07-01 11 views
12

Bu AppDelegate uygulamasında didFinishLaunchingWithOptions yöntemidir. bana senaryoyu anlatayım, benim app facebook gibi sideMenu geliştirdik ama şimdi ekranlarda (ViewController)AppDelegate'deki diğer ViewController'dan RootViewController nasıl değiştirilir?

Burada yan Menüsü içerirler bir argümandır SideMenuViewController olduğu, uygun sideMenu listesini değiştirmek zorunda olan sonunda pencerenin rootViewController olur.

SO, çok temel bir soru ben tarafından temin etmek karşılama yapmak, herhangi bir programcı fazla kod veya gereksinimi bilmek isterse

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
{ 

self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; 

SideMenuViewController *leftMenuViewController = [[SideMenuViewController alloc] init]; 

self.container = [ContainerOfSideMenuByVeerViewController 
        containerWithCenterViewController:[self navigationController] 
        leftMenuViewController:leftMenuViewController]; 

self.window.rootViewController = self.container; 

[self.window makeKeyAndVisible]; 

return YES; 

} 

"Nasıl pencerelerin rootViewController olur kontrolörü veya değişken değiştirmek için" olduğunu ortaya kodumu veya yorumlarımı düzenleme.

cevap

13

bu deneyin:

<YourAppDelegateClass> *app = [[UIApplication sharedApplication] delegate]; 
app.window.rootViewController = <YourRootViewController>; 

(örneğin, AppDelegate) gerekli başlıkları eklemeyi unutma yoksa CE elde edersiniz. enter image description here

+0

Sevgili Bunu zaten denedim, ana pencerelerin ekranına getirdi, ama sevgili iki Kontrol Cihazını ana denetleyiciden daha önce içeri soktum ve gezdim, öyle mi? –

+0

iyi, ' .navigationController.viewControllers' kullanarak navigasyon kontrol cihazınızdaki kontrolör yığınlarına erişebilirsiniz. NSArray'ı döndürür. Ve bu dizideki ilk denetleyiciyi yenisiyle değiştirmeyi deneyin. – Renderhp

+0

Tam olarak değil, yolun benim sorunumu çözmek için çok yardımcı oldu. Teşekkürler @renderhp –

13

Film Şeridi 'başka İçinde

ViewControllerile bu kodu kullanabilirsiniz:

self.view.window.rootViewController = [self.view.window.rootViewController.storyboard instantiateViewControllerWithIdentifier:@"**STORYBOARD ID**"]; 

AppDelegateİçinde:

self.window.rootViewController = [self.window.rootViewController.storyboard instantiateViewControllerWithIdentifier:@"**STORYBOARD ID**"]; 
8
Bu seferki iş gibi görünüyor Biz yazabilir

UIView.transitionWithView(self.window!, duration: 0.5, options: UIViewAnimationOptions.TransitionFlipFromLeft, animations: { 
     self.window?.rootViewController = anyViewController 
}, completion: nil) 

: ile Animasyon ile rootviewcontroller değiştirme

let appdelegate = UIApplication.sharedApplication().delegate as! AppDelegate 
let mainStoryboard: UIStoryboard = UIStoryboard(name: "Main", bundle: nil) 
var homeViewController = mainStoryboard.instantiateViewControllerWithIdentifier("HomeViewController") as! HomeViewController 
let nav = UINavigationController(rootViewController: homeViewController) 
appdelegate.window!.rootViewController = nav 

elde edilebilir uygulama delegate.swift dışındaki sınıftan kök görünümü denetleyicisi değiştirme

: Swift kullanarakBilgi Paylaşımı this'a çok benzer bir yöntemi genelleştirin.

Bu birileri için yararlı olur umarım.