gpt4 book ai didi

ios - 我应该如何在 xcode Storyboard中链接 View Controller ?

转载 作者:塔克拉玛干 更新时间:2023-11-02 09:31:08 25 4
gpt4 key购买 nike

我想在 xcode Storyboard中链接 View Controller 以实现以下效果:

A -> B -> C -> D -> E -> B -> C -> D -> E -> B -> ...

上面的字母代表独立的 View Controller (全尺寸场景)。当我在 View 之间移动时,我想从右到左水平滑动 segue,我不希望或不需要保留以前 View 的状态(即没有推送或模态 segue)。不过,我确实需要在 View 之间传输一些状态。

关于如何使用 Storyboard 编辑器、代码或两者的某种组合来最好地实现这一目标,您有什么建议吗?

最佳答案

我突然想到了几个选项:

  1. 与旧版本 iOS 具有最大向后兼容性的最简单解决方案是使用导航 Controller ,在某处保留对 View Controller B 的引用,然后您可以在 E,有一些 IBAction 可以:

    [self.navigationController popToViewController:B animated:YES];

    在这个模型中,除了从 EB 的那个之外,所有的 segues 都将在 Storyboard中表示,您将在IBAction(或其他)。

  2. 如果您可以放弃 iOS 5 兼容性,您还可以使用 unwind segue。在这种情况下,所有的 segue 都将在 Storyboard中表示。但是我们中的许多人还不愿意放弃 iOS 5 的兼容性,所以也许您不想考虑这个解决方案。但是,如果您确实想使用展开转场,您只需在 B 中定义一个展开操作,例如:

    - (IBAction)backToB:(UIStoryboardSegue *)segue
    {
    // if you need to do any UI update because we got an unwind segue
    // back to this controller, do that here
    }

    一旦你在 B 中执行了这个 unwind 操作,你就会突然拥有一个名为 backToB 的新 segue 类型(不过,我建议你给它起一个更好的名字比那) 在 IB 中呈现给你,你可以使用它从 EB。显然,所有其他推送转场都会像往常一样在您的 Storyboard中表示。

  3. 如果您真的不想使用导航 Controller ,但又不需要 iOS 4 兼容性,您也可以通过包含 View Controller 实现此目的,其中您有一个父自定义容器 Controller , ParentVCAE 将是子 Controller 。然后,您可以使用自定义 segue 来过渡子 Controller 序列。

  4. 一个最终的变化可能如下:

    BABCDE

    在这种情况下,与选项 1 一样,您只是使用导航 Controller ,当 B 首次加载时,它将以编程方式立即在 viewDidLoad 中执行以下操作

    [self presentViewController:A animated:NO];

    尽管 B 是 Root View Controller ,但感觉上就像是 A 一样。当 A 完成后,它将返回到 B,此时您可以执行标准的 B-C -D-E 插入 segue 进程,但是因为我们让 B 成为根 Controller ,所以 E 可以做 popToRootViewControllerAnimated 回到 B,你不需要担心保持指向 B 的指针。如果 A 是登录 Controller 或初始屏幕,或有些超出正常流程的东西,则此模型很有意义。

其中,1 可能是最简单的,2 可能被认为是最优雅的(尽管您失去了 iOS 5 和更早版本的支持),如果您不介意多写一点(有些复杂的)代码和内存,则可以选择 3 use 很关键,4 和 1 一样非常简单,但这只是流程是否对您的应用有意义的问题。就个人而言,我会倾向于选项 1 或 4,具体取决于 View Controller A 是什么。如果需要 iOS 4 兼容性,这两个选项也适用于 NIB。

关于ios - 我应该如何在 xcode Storyboard中链接 View Controller ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14465861/

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