これは、AppDelegateのdidFinishLaunchingWithOptionsメソッドです。シナリオを説明してみましょう。アプリでfacebookのようなsideMenuを開発しましたが、画面(ViewController)に従ってsideMenuリストを変更する必要があります。
ここでサイドメニューはSideMenuViewControllerです。これは、containerの引数であり、最終的にはウィンドウのrootViewControllerになります。
SO、非常に基本的な問題が発生します「ウィンドウのrootViewControllerになるコントローラーまたは変数を変更する方法」
- (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;
}
プログラマーがさらに多くのコードや要件を知りたい場合は、コードを編集したり、コメントで提供したりできます。
これを試して:
<YourAppDelegateClass> *app = [[UIApplication sharedApplication] delegate];
app.window.rootViewController = <YourRootViewController>;
必要なヘッダー(AppDelegateなど)を含めることを忘れないでください。そうしないと、CEが取得されます。これはうまくいくようです:
ストーリーボード
別の内部ViewControllerこのコードを使用できます:
self.view.window.rootViewController = [self.view.window.rootViewController.storyboard instantiateViewControllerWithIdentifier:@"**STORYBOARD ID**"];
内部AppDelegate:
self.window.rootViewController = [self.window.rootViewController.storyboard instantiateViewControllerWithIdentifier:@"**STORYBOARD ID**"];
Swiftを使用した知識共有:
ルートビューコントローラーをapp delegate.Swift以外のクラスから変更する
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
アニメーションでrootviewcontrollerを変更するには、次のようにします。
UIView.transitionWithView(self.window!, duration: 0.5, options: UIViewAnimationOptions.TransitionFlipFromLeft, animations: {
self.window?.rootViewController = anyViewController
}, completion: nil)
this に非常に類似した一般化メソッドを書くことができます。
これが誰かのために役立つことを願っています。