14

これが AppDelegate の didFinishLaunchingWithOptions メソッドです。シナリオを説明させてください。私は自分のアプリで facebook のような sideMenu を開発しましたが、画面 (ViewController) に従って sideMenu リストを変更する必要があります。

ここでのサイド メニューは、最終的にウィンドウの rootViewController になる、contain の引数である SideMenuViewController です。

SO、非常に基本的な質問が発生するのは、「Windowsの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;

}

プログラマーがより多くのコードや要件を知りたい場合は、コードを編集するかコメントで提供してください。

4

3 に答える 3

14

これを試して:

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

必要なヘッダー (AppDelegate など) を含めることを忘れないでください。そうしないと、CE が取得されます。これはうまくいくようです:ここに画像の説明を入力

于 2013-07-01T15:32:29.270 に答える
11

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)

これと似たように generalize メソッドを書くことができます。

これが誰かに役立つことを願っています。

于 2015-10-13T09:57:05.393 に答える