问题标签 [unwind-segue]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
93 浏览

ios - 将 Push unwind segue 转换为模态展开 segue

我有一个视图被推送到导航堆栈上,当视图被关闭(使用情节提要展开转场)时,我希望它被模态转场解除。

我已经尝试将导航控制器子类化并实现segueForUnwindingToViewController,但必须有一种更简单的方法来完成我想要做的事情。诸如指定UIStoryboardSegue.Modal为展开的 segue 动作之类的东西。

有任何想法吗?

0 投票
1 回答
268 浏览

ios - 由于位置管理器,在展开 segue 后崩溃

我有几个视图控制器可以展开到根视图控制器。对于大多数视图控制器,展开转场效果很好,不会导致应用程序崩溃。只有使用 CLlocationmanager 的 viewcontrollers 不能执行 unwind segue 到 root viewcontroller。这些是使我的代码有所不同的行:

通过评论我的代码的这一部分,展开工作。尤其是最后一行有所不同。我试图在放松之前释放 locationmanager。有时它会起作用。有时它不会。调试控制台说:

不管什么意思。我不知道该怎么做。

编辑

添加这个之后

它有点工作。我试了5次。然后它再次崩溃:(真的很奇怪。不确定但错误消息似乎已经改变。它说“WebThread”(见下文)。我确实有一个也有委托方法的webview。我会尝试将webview发布为出色地。

编辑2

好的,在prepareforsegue方法中释放位置管理器和webview后,它就可以工作了。

0 投票
1 回答
415 浏览

ios - 使用 Unwind Segue 展开多个 ModalViewController

我有一个显示多个视图控制器的项目。

ViewController A是根。A使用B模态演示进行演示。B使用C模态演示进行演示,依此类推。

我有一个 Unwind segue 展开回根,但是我注意到如果我在 on ViewController D,展开行为是D-> C-> B-> A(Root)。因此,您先简要地看到C,然后再B简要地A显示之前。他们似乎一次又一次地被解雇。想要的效果是D直接回到ABC保持隐藏。是否有可能做到这一点,也许 unwind segue 不是正确的方法。

放松转场在UIViewController A;

0 投票
1 回答
703 浏览

ios - 带有容器的 IOS 标签栏

我有一个带按钮的主 VC,然后调用选项卡栏控制器的项目 1 和项目 2。在第 1 项中,我有一个容器;在容器内有一个表视图,然后是另一个选项卡栏控制器。下图。

在此处输入图像描述

问题:如何再次显示容器的第一个视图(表视图)(当我单击第一个选项卡栏控制器的第 1 项时)?因为如果我在表格和第二个选项卡栏中导航,然后再次单击第一个选项卡栏的第 1 项,它将在最后一个视图中继续。


解决了

解决方案:http ://sandmoose.com/post/35714028270/storyboards-with-custom-container-view-controllers

0 投票
4 回答
4466 浏览

ios - Unwind segue 在非模态时不会关闭自适应弹出框演示

iOS 9 测试版更新:Apple 可能已针对 iOS 9 修复此问题。如果您针对 iOS 8 解决此问题,请确保它在 iOS 9 上也能正常工作。

在 storyboard 中,我创建了一个 popover 演示 segue 来从一个按钮呈现一个导航和视图控制器,以及创建一个 unwind segue。

在纵向中,模态(全屏)演示文稿按预期展开/关闭。

在横向,展开segue 也会被调用,但是popover 演示不会自动关闭。

我错过了连接的东西吗?我必须自己关闭弹出窗口演示吗?

故事板场景和转场 更新: 查看 gabbler 的示例代码后,我已将问题缩小到在单视图应用程序中弹出窗口关闭正常,但在主从应用程序中没有。

更新 2: 这是层次结构的样子(为简单起见省略导航控制器),回答 Luis 提出的问题:

  • 拆分视图控制器
    • 主视图控制器
    • 细节视图控制器
      • 章节视图控制器(模态页表)
        • 选择视图控制器(有问题的弹出框展开到章节视图控制器,但不会关闭)

正如我在之前的更新中提到的,我创建了一个新的主/详细模板,并直接从详细视图(中的一个按钮)显示了一个弹出框。它不会解雇。

0 投票
2 回答
1575 浏览

ios - 使用 exit-segue 时的 viewWillAppear 和 viewDidAppear

我有一个包含信息的表格视图,以及一个在表格视图中添加信息的 VC。我对信息添加 VC 有一个模态搜索,然后使用退出搜索返回到 tableview。

当我这样做时,我的viewDidAppearviewWillAppear方法都不会被调用。为什么会这样以及我可以使用哪些其他方法来重新加载填充表格视图所需的数据?

任何提示将不胜感激。

0 投票
1 回答
227 浏览

ios - 全球放松赛格

我有一个可以在应用程序之外触发的重置通知,无论用户正在做什么都将退出并返回主屏幕,因为数据已变得无效。目前,我必须在每个视图控制器中放置展开转场,但我只想在发生此通知时以编程方式调用全局 performSegueWithIdentifier。有相当多的视图控制器,在任何地方都必须复制这段代码并不是很好,随着新的视图控制器被添加到项目中,这将成为一个维护问题。有没有一种简单的方法可以做到这一点?

0 投票
3 回答
15015 浏览

ios - 在展开 segue 动作之前如何做一些事情?

我刚刚弄清楚了什么是 unwind segue 以及如何将它与这个问题的精彩答案一起使用。非常感谢。

但是,这里有一个这样的问题:

假设场景 B 中有一个按钮,它展开到场景 A,在它开始之前我想要做一些事情,比如将数据保存到数据库。我在 B.swift 中为这个按钮创建了一个动作,但它似乎直接进入场景 A 而没有采取指定的动作。

任何人都知道为什么或如何做到这一点?

谢谢你。

0 投票
1 回答
158 浏览

ios - 显示 UISearchDisplay 时,导航栏不会在展开 segue 时消失

我在自定义 segue 访问的应用程序中有一个辅助屏幕。我通过调用以编程方式展开 segue:

出于某种原因,它工作得很好,尽管 segue 是一种习惯。然而,当我在显示最近引入的 UISearchDisplayController 表时关闭控制器时,即使我将其隐藏在 viewWillAppear:animated: 回调中,导航栏也会留在主 viewController 上。 在此处输入图像描述 如果我在显示普通表格时将其关闭,则不会出现意外的导航栏。

因此,我尝试通过执行以下命令来实现解开 segue 的正确方法:

但程序崩溃抱怨它可能找不到segue:

*** 由于未捕获的异常 'NSInvalidArgumentException' 导致应用程序终止,原因:'Receiver () has no segue with identifier 'unwindToMainMenu''

当然,正如您在情节提要中看到的那样,绕组标识符很好地出现在: 在此处输入图像描述

在任何情况下,在显示 UISearchDisplayController 表时通常关闭控制器时,在后一种实现中,主控制器上也存在顶栏,因此问题似乎与展开转场无关。

不幸的是,Apple 教程程序没有提供手动展开segues,而其他教程则以我尝试实现它的方式呈现。我也没有找到有关连接到 searchDisplay 表的寄生导航栏的任何信息。我该如何解决我的问题?

谢谢,法布里齐奥

0 投票
0 回答
176 浏览

ios - 从 UIPopoverController 中解开 Segue

我已经通过发送它UIViewController从 a 加载了它(它不是我的应用程序的主要故事板)。UIStoryboardinitialViewController

我在那个故事板中使用了一个放松的转场。它的退出点是在主要UIViewController场景中的一个放松动作中。 UIStoryboard

我用代码而不是 segue 显示这个视图控制器。

如果我用 显示加载的视图控制器presentViewController:animated:completion:,则展开 segue 可以正常工作并找到合适的处理程序。

但是,如果我将呈现的视图控制器包装在 a中,然后呈现弹出框,则展开 segue 不起作用。UIPopoverController我可以断点展开动作并且它不会被调用。

在他们关于 unwind segues 如何工作的技术说明中,Apple 介绍了查找目标视图控制器的过程。

Unwind Segue 如何确定其目标视图控制器 当启动 unwind segue 时,它​​必须首先在导航层次结构中找到最近的视图控制器,该控制器实现在创建 unwind segue 时指定的展开操作。这个视图控制器成为展开转场的目的地。如果没有找到合适的视图控制器,则 unwind segue 被中止。

从启动 unwind segue 的视图控制器开始,搜索顺序如下:

  1. 响应者链中的下一个视图控制器被发送viewControllerForUnwindSegueAction:fromViewController:withSender:消息。对于模态呈现的视图控制器,这将是调用presentViewController:animated:completion:. 否则,parentViewController. 默认实现在接收者的childViewControllers数组中搜索想要处理展开动作的视图控制器。如果接收者的子视图控制器都不想处理展开动作,则接收者检查它是否想要处理展开动作,如果是,则返回 self。在这两种情况下,该canPerformUnwindSegueAction:fromViewController:withSender:方法都用于确定给定的视图控制器是否想要处理展开操作。

  2. viewControllerForUnwindSegueAction:fromViewController:withSender:如果在第一步中没有返回视图控制器,则从响应者链中的下一个视图控制器开始重复搜索

(注意我对第二点的强调。)

所以,据我所知,我正在做的事情应该以某种方式工作。unwind segue 将在响应者链中冒泡,从呈现的视图控制器中UIPopoverController出来,进入到出现的任何内容中,并在链上向上 - 最终找到我的 unwind 处理程序。

但它不起作用。有什么想法为什么不呢?