问题标签 [dismissviewcontroller]

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 投票
1 回答
165 浏览

ios - 在objective-c中删除当前和呈现的视图控制器

我有一个 tableview 控制器,一个详细的 VC。和一个允许删除项目的编辑详细信息 VC。Tableview 由一组项目提供。

删除该项目后,我不仅要关闭编辑 VC,还要关闭它下面的 detailVC(因为该项目不再存在),只留下更新的表格视图。

我可以通过通知成功更新表格视图,并且可以关闭编辑视图控制器。但是,我想不出在编辑 VC 消失后删除详细信息 VC 的方法。

到目前为止,在editVC中的服务器确认删除后,我有:

这会取消 editVC 但不会取消 detail VC。

我还在 tableview VC 和 detail VC 观察到的删除时发送通知,并且两者的处理程序具有相似的解除代码。我已经尝试过每个:

但是细节视图仍然没有被解雇。

值得注意的是,detail 是 Show(例如)推送,而 Edit 是嵌入在其自己的导航中的模态视图控制器。

故事板中的 VC。第一个导航是主故事板中 TabViewController 的一部分

编辑:

如果有任何区别,则从 AlertViewController 调用第三个(编辑)VC 中的删除方法。

从Apple的文档中,仅调用dismissViewController就应该关闭导航堆栈中所有以后的VC,但这似乎没有发生:

讨论

呈现视图控制器负责关闭它呈现的视图控制器。如果您在呈现的视图控制器本身上调用此方法,UIKit 会要求呈现的视图控制器处理解除。如果您连续呈现多个视图控制器,从而构建一个呈现视图控制器的堆栈,则在堆栈中较低的视图控制器上调用此方法会解除其直接子视图控制器以及堆栈上该子视图控制器上方的所有视图控制器。发生这种情况时,只有最顶层的视图会以动画方式消失;任何中间视图控制器都简单地从堆栈中删除。最顶层的视图使用其模态转换样式被解除,这可能与堆栈中其他视图控制器使用的样式不同。如果要保留对视图控制器的呈现视图控制器的引用,请在调用此方法之前获取 presentViewController 属性中的值。在显示的视图控制器上调用 viewDidDisappear: 方法之后调用完成处理程序。

在此处输入图像描述

0 投票
1 回答
350 浏览

ios - 通过向下滑动关闭iOS中的视图控制器时如何运行代码?

我有一个视图控制器,我使用 Swift 和 Xcode 在我的 iOS 应用程序中呈现,可以通过向下滑动来关闭它。我需要实现当用户在视图控制器上向下滑动以将其关闭时执行的代码。我怀疑发生这种情况时会调用一个回调函数。谁能告诉我是不是这样以及回调函数是什么?

0 投票
2 回答
1465 浏览

swift - 在 Swift 中使用按钮关闭模式视图?

学习一些视图控制器基础知识,并坚持如何使用按钮关闭模式。

在我精简的示例中,我有两个视图设置,初始视图和模态视图。第一个视图有一个成功弹出模态的按钮。在模式上,有一个应该自行关闭的按钮。

根据其他 帖子和文档,我应该能够像这样运行附加到按钮的简单代码:

当我点击“关闭模式”按钮时,没有任何反应。我在这里想念什么?我把这段代码放在错误的地方吗?目前,它位于主 ViewController.swift 文件中。

在此处输入图像描述

0 投票
5 回答
1027 浏览

ios - Swift:在关闭 ViewController2 后从 ViewController1 调用方法

我目前正在构建一个家庭作业跟踪应用程序,您可以在其中在 TableView 中添加课程。在一个 ViewController 中,我有一个已经存在的课程列表。我还有一个按钮,允许用户添加新课程。当他们单击按钮时,应用程序会触发模态搜索到新的 ViewController,他们可以在其中填写表单以添加新课程。但是,当他们完成并单击关闭当前 ViewController 的按钮以返回课程列表时,我找不到使用用户刚刚添加的课程更新课程列表的方法。我知道如果使用 segue,您可以使用 prepare 方法。不过我打电话

我要调用以重新加载表的方法位于第一个 ViewController 中。有没有办法在第二个 ViewController 关闭之前或之后调用第一个 ViewController 中的 load 方法?

0 投票
1 回答
149 浏览

swift - 如何关闭视图控制器并快速弹出到根视图控制器?

我有包含 ViewController(A) 的主 TabbarController。从这个 A 推另一个 ViewController(B) 使用 navigationController?.pushViewController 从 B 推另一个 ViewController(C) 使用 navigationController?.pushViewController 从 C 模态呈现另一个 ViewController(D)。从 D 使用轻按按钮时,它应该关闭 D 和 popToRootViewController 。

我用谷歌搜索了类似的问题,但还没有找到解决方案。

我怎样才能做到这一点?

0 投票
1 回答
45 浏览

ios - 用户在 UIAlertControl 中完成操作时停止关闭 UIViewController

如何处理点击警报控制器按钮的动作,然后继续关闭当前视图控制器?

一些代码和平:

提前致谢

0 投票
1 回答
30 浏览

swift - 为上层 ViewController 设置动画时显示 ViewController 的视图

我将 ViewController(1) 呈现在另一个 ViewController(2) 之上,我想实现这样的效果,即当我关闭 viewController1 时,我通过 CGAffineTransform 执行减小大小并关闭它。

我想要实现的效果是,当我减小 ViewController1 的视图大小时,我还想看到它后面的 ViewController2 的视图,而现在我只看到黑色背景。

我使用的代码非常简单:

我不知道如何达到这个效果

0 投票
1 回答
58 浏览

ios - 关闭一个 View Controller 并以相同的方法呈现一个新的 - swift

问题总结

  • 我有两个视图控制器(VC1 = MainViewController 和 VC2 = ResultViewController)。在 VC1 中有一个名为 endGame() 的方法。在这种方法中,我想同时关闭 VC1 并呈现 VC2。

  • 在 VC2 中有一个按钮函数叫做 playAgainButton()。在这个函数中,我想关闭 VC2 并呈现 VC1。

  • 当我尝试先关闭 VC1 然后呈现 VC2 时,VC1 无法呈现 VC2,因为 VC1 已经被关闭并且不存在于堆栈中。

  • 当我尝试先呈现 VC2 然后关闭 VC1 时,VC2 会出现 1 秒钟然后立即消失。

我试过的

我想出了类似的问题:

  • 关闭一个 View Controller 并显示另一个 View Controller。这对我的问题有最接近的答案。它建议使用协议。因此,通过使用协议,我解决了一半的问题 --> 在 VC2 中,我既可以解除 VC2,也可以呈现 VC1。但是在 VC1 中,我不能同时关闭 VC1 并呈现 VC2。

我使用最新的 swift 和 Xcode 版本。

我的代码

VC1

VC2

0 投票
1 回答
29 浏览

ios - 如何关闭多个当前视图控制器?

如果我有这样的申请流程..

导航(vc1) --pushed--> vc2 --present-->导航(vc3) --push--> vc4 --push--> vc5

如何解雇 vc2 ?

0 投票
0 回答
32 浏览

ios - 当presentingViewController是UITabbarController时,Dismiss和popViewController不工作

我的场景

UITabbar ( UINavigation(page1) -push-> page2 -push-> page3 -present- > page4 )

从我的功能中,我留在 page4 并想将其关闭并弹出到根目录( page1 )但是当我得到 presentingViewController 它返回UITabbarController不是我的UINavigationBarController

我现在的代码。

在我将 UITabbar 添加到我的流程之前,我的代码正在运行。

有人可以帮助我或向我解释根本原因吗?谢谢你的帮助。

更新 现在我找到了一个解决方案,但我认为这还不够好。