1

質問のタイトルは誤解を招く可能性があると思います。これを一行で表現する方法がよくわからないからです。私は公開コントローラー (Facebook アプリで見られるものなど) を実装しようとしています。ここで見つけることができる甘い既製のソリューションSWRevealViewControllerを使用しています。著者が提供する最も単純な例の 1 つ (例/プロジェクト 2) では、Appdelegate.m ファイルで、リビール コントローラーが確立されます。

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

    UIWindow *window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
    self.window = window;
    FrontViewController *frontViewController = [[FrontViewController alloc] init];
    RearViewController *rearViewController = [[RearViewController alloc] init];

    UINavigationController *frontNavigationController = [[UINavigationController alloc] initWithRootViewController:frontViewController];
    UINavigationController *rearNavigationController = [[UINavigationController alloc] initWithRootViewController:rearViewController];

    SWRevealViewController *mainRevealController = [[SWRevealViewController alloc]
    initWithRearViewController:rearNavigationController frontViewController:frontNavigationController];

    mainRevealController.delegate = self;

    self.viewController = mainRevealController;

    self.window.rootViewController = self.viewController;
    [self.window makeKeyAndVisible];
    return YES;
}

appdelegate.hviewcontrollerファイルで定義されている場所

@property (強力、非アトミック) SWRevealViewController *viewController;

したがって、これにより、リビール コントローラーがルート ビュー コントローラーとして表示されます。私のアプリでは、ルート ビュー コントローラーが異なり、アプリの後半で Reveal Controller の使用を開始するだけです。私のルート ビュー コントローラーはログイン画面であり、次のビューはこれを実装したい場所です。

私の質問は次のとおりです。

  • まず、ログイン画面をルートView Controllerにするのは正しいですか?これをポップアップ表示して削除するには、何らかのモーダル ビューを使用する必要がありますか?
  • 委任ファイルで以前に見つかったものをどこにどのように配置しますか? それとも、そこに残っていますが、ルートView Controllerに割り当てられていませんか?

私はこれについて本当に暗闇にいると感じているので、それが完全に些細なことのように思われる場合はご容赦ください. ありがとう!

4

2 に答える 2

0

私は最近、この問題について考えました。実際、私が見つけた他のすべてのサードパーティの実装には、すべてこの設定があります。

私が推奨するのは、ルート コントローラを Reveal コントローラに変更し、そこからすべてを構築することです。元のルート、ログイン、またはその他のコントローラーの公開を無効にすることができます。1回やりましたが、思ったほど痛くありませんでした。

于 2013-08-23T11:01:23.420 に答える
0

私はパーティーに遅れています。あなたが望む動作は実装が簡単です。それを通常のナビゲーション スタックと考えてください。途中で従った例 2 を見てみましょう (デリゲートからコードを移動する必要はありません)。フロント ビュー コントローラーをフロント ナビゲーション コントローラーのルートとして設定する代わりに、ログイン ビュー コントローラーをフロント ナビゲーション コントローラーのルートとして設定する必要があります。

前の例は次のとおりです。

FrontViewController *frontViewController = [[FrontViewController alloc] init];
RearViewController *rearViewController = [[RearViewController alloc] init];

UINavigationController *frontNavigationController = [[UINavigationController alloc] initWithRootViewController:frontViewController];
UINavigationController *rearNavigationController = [[UINavigationController alloc] initWithRootViewController:rearViewController];

SWRevealViewController *mainRevealController = [[SWRevealViewController alloc]
        initWithRearViewController:rearNavigationController frontViewController:frontNavigationController];

次に、ログイン ビュー コントローラーを設定した後の例を示します。

LoginViewController *loginVC =[[LoginViewController alloc]init];//instead of frontViewController
RearViewController *rearViewController = [[RearViewController alloc] init];

UINavigationController *frontNavigationController = [[UINavigationController alloc] initWithRootViewController:loginVC];//instead of frontViewController
UINavigationController *rearNavigationController = [[UINavigationController alloc] initWithRootViewController:rearViewController];

SWRevealViewController *mainRevealController = [[SWRevealViewController alloc]
    initWithRearViewController:rearNavigationController frontViewController:frontNavigationController];

を作成することを忘れないでくださいLoginViewControllerまたはその nib ファイルで名前を付けることを選択し、それをインポートします。ではLoginViewController、 に移動するアクション コードを実装する必要がありますfrontviewcontroller

FrontViewController *frontViewController = [[FrontViewController alloc] init];
[self.navigationController pushViewController:frontViewController animated:YES];

出来上がり。

于 2013-12-30T11:22:55.250 に答える