我认为这个问题的标题可能会产生误导,因为我不太清楚如何在一条线上说出来。 我正在尝试实现一个揭密控制器(就像在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;
因此,这将显示控制器作为根视图控制器。对于我的应用程序,我的根视图控制器是不同的,我只是稍后在应用程序中开始使用揭示控制器。我的根视图控制器是登录屏幕,然后继续视图是我想要实现它的地方。
我想我的问题是:
我对此真的感到茫然,所以请原谅我,如果它看起来完全无足轻重。 谢谢!
答案 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瞧。