gpt4 book ai didi

ios - 最佳实践 : Using Size Classes for Single table view to dual table view

转载 作者:可可西里 更新时间:2023-11-01 02:19:37 24 4
gpt4 key购买 nike

我知道“最佳实践”是 stackoverflow 的禁忌,但无论如何我都会试一试,因为我认为这很重要并且需要一个具体的答案。自动布局是新事物,随着最近发布的 iPad 并排多任务处理,理解自动布局的细微差别变得前所未有的重要。

我的情况:我的应用有两个列表。在 iPhone 上,一次只能查看一个。我可以做到这一点:

  1. 使用一个可以在两个列表数据数组之间切换的 ViewController。
  2. 有两个 ViewController,每个都有自己的 tableView 和数据
  3. 有一个 ViewController 和两个表,但其中一个始终隐藏
  4. 更好的选择?

我的具体问题:在 iPad 上,我希望两个列表同时并排显示。 iPhone 和 iPad 都只能纵向运行该应用程序(不支持横向)我看到了一些提供并排 View 的选项:

  1. 除了以编程方式为 iPad 布局添加第二个表格外,不确定如何使用选项 #1 进行并排工作
  2. iPhone 版本中的两个 VC 将在 iPad 版本中并排显示,使用之前隐藏的容器 View 将 VC2 添加到 VC1
  3. 两个表同时可见
  4. 更好的选择?

如果能回答如何实现此功能,我将不胜感激。虽然我了解每个选项的概念,但我不了解具体的步骤/代码,因此不胜感激。谢谢。

最佳答案

我的应用程序中有这个确切的场景,我使用了选项 #2。

对于 iPad,它将使用 w-Regular h-Regular 尺寸类。这site对尺码分类有很好的视觉效果和解释。

  • 在 Interface Builder 中,切换到 w-Regular h-Regular 大小类。

Size Class Selection

  • 在 w-Regular h-Regular 中,从对象库(Interface Builder 的右下角)中拖出一个容器 View 并将其放置在您的 View 中。

Container Selection

  • 在 w-Regular h-Regular 中,根据需要设置约束,以便在新布局中考虑容器 View 。
    • 可能需要关闭现有约束。您可以在约束中的尺寸检查器中执行此操作。请注意,在下图中我的约束已安装。单击“已安装”复选标记左侧的 + 以在 w-Regular h-Regular 尺寸类别中卸载它。
    • 另一种卸载约束的方法是在屏幕对象的大小检查器中突出显示约束并按删除。它实际上并没有删除约束,只是将其从当前大小类中卸载。

Installed Constraint

  • 将 VC 链接到容器 View 。从 Container 按住 Ctrl 键拖动到 VC 以创建嵌入转场。您还需要添加代码以仅在 iPad 上使用此嵌入转场。通过在 IB 中选择 segue 并转到 Attributes Inspector,为 segue 提供一个标识符。在下面的示例代码中,我调用了 segue EmbedSegueName。

    - (BOOL)shouldPerformSegueWithIdentifier:(NSString *)identifier sender:(id)sender  {

    if(UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad && [identifier isEqualToString:@"EmbedSegueName"]) {
    return YES;
    }

    return NO;
    }
  • 不允许访问第二个 VC。我不知道您如何在 iPhone 上显示两个不同的 VC,但在我的应用程序中我使用的是 UITTabBarController。这就是我在应用程序中从 iPad 的标签栏中删除额外 VC 的方法。

    if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {

    // Remove the tab bar item because it will be contained in the iPad's layout.
    // In this example, it's removing the 2nd tab bar item.
    NSMutableArray *viewControllers = [NSMutableArray arrayWithArray:[self.tabBarController viewControllers]];
    [viewControllers removeObjectAtIndex:1];
    [self.tabBarController setViewControllers:viewControllers animated:YES];
    }

提示:如果您在运行 iPhone 版本时遇到错误并且它提示容器 View (即使它没有安装在 iPhone 的尺寸类中),请尝试将容器 View 放入另一个 View 中,然后看看是否能解决问题。

我希望这足以让您入门。

关于ios - 最佳实践 : Using Size Classes for Single table view to dual table view,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31706774/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com