如何重新定位以前放在Appdelegate.m中的代码

时间:2013-08-23 10:52:50

标签: iphone ios objective-c uiviewcontroller

我认为这个问题的标题可能会产生误导,因为我不太清楚如何在一条线上说出来。 我正在尝试实现一个揭密控制器(就像在Facebook应用程序中看到的那样),我正在使用一个甜蜜的预制解决方案 SWRevealViewController ,它可以是found here。 在作者提供的一个最简单的例子中(示例/项目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.h文件中通过

定义viewcontroller
  

@property(强,非原子)SWRevealViewController * viewController;

因此,这将显示控制器作为根视图控制器。对于我的应用程序,我的根视图控制器是不同的,我只是稍后在应用程序中开始使用揭示控制器。我的根视图控制器是登录屏幕,然后继续视图是我想要实现它的地方。

我想我的问题是:

  • 首先,将登录界面设为根视图控制器是否正确?我是否应该使用某种模态视图来弹出它然后摆脱它?
  • 我如何以及在何处将先前在代理文件中找到的内容放入?或者它们是否保留在那里但未分配给根视图控制器?

我对此真的感到茫然,所以请原谅我,如果它看起来完全无足轻重。 谢谢!

2 个答案:

答案 0 :(得分:0)

我最近考虑过这个问题。事实上,我发现所有其他第三方实现都有这个设置。

我的建议是将根控制器更改为揭密控制器并从那里构建所有内容。您可以禁用原始根,登录或任何其他控制器的显示。我做了一次,并没有预期的痛苦。

答案 1 :(得分: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];

Et瞧。