【问题标题】:Hiding the master view in a Split View Controller在拆分视图控制器中隐藏主视图
【发布时间】:2012-08-11 07:51:00
【问题描述】:

我是 iPad 开发的新手(或者 iPhone :)),我正在构建一个带有拆分视图控制器的应用程序。

问题是第一个屏幕应该是单个屏幕。我希望用户写入用户/传递数据以连接到远程服务器,并且在主视图中实际上没有任何内容可显示。

我知道我可以在 splitViewController:shouldHideViewController:inOrientation: 中返回 YES,这对于第一个屏幕效果很好,但我想在用户点击登录按钮并验证凭据时获得两个视图。

我可以在 shouldHideViewController 中设置一些条件,并在第二个屏幕中显示两个视图,而在第一个屏幕中只显示细节,但 shouldHideViewController 仅在我旋转 iPad 时调用,而不是在我执行 segue 时调用。

您有什么建议吗?我应该将我的 UI 方法更改为其他方法吗?欢迎提出任何建议。

【问题讨论】:

  • 您在使用 SplitView 项目模板吗?
  • 不是真的,我尝试了模板,但在这种情况下,我是从头开始的。我将拆分视图控制器作为第一个场景,每侧都有一个导航控制器。我正在导航控制器中显示我的所有视图。

标签: ipad ios5 uisplitviewcontroller


【解决方案1】:

从头开始是个好主意。您可以更好地控制 IMO 上发生的事情。 在你的起点,你想添加你的 LoginViewController。

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
    self.loginController = [[LoginViewController alloc] initWithNibName:@"LoginViewController" bundle:nil];
    self.window.rootViewController = self.viewController;
    [self.window makeKeyAndVisible];
    return YES;
}

稍后当身份验证过程完成后,您想继续使用 SplitView,对吗?

- (void)continueWithSplitView {

    UINavigationController *leftNav = [[UINavigationController alloc] initWithRootViewController:self.masterViewController];
    UINavigationController *rightNav = [[UINavigationController alloc] initWithRootViewController:self.detailViewController];

    self.splitViewController.viewControllers = [NSArray arrayWithObjects:leftNav, rightNav, nil];
    self.view.window.rootViewController = self.splitViewController;
}

请注意,在这两种方法中,您想要的 viewController 都设置为 UIWindow 的 rootViewController 属性。这将自动将控制器的视图添加为 UIWindow 中的顶级视图。

此外,请确保您遵循 MVC 模式,例如您的凭证组织的模型对象。

【讨论】:

  • 您好多米尼克,非常感谢。它回答了我关于视图和控制器结构的很多问题。
  • 嗨 Luis,我强烈推荐阅读 Apple 的 View Controller Programming Guide。这是史诗。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-04-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多