问题标签 [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 回答
1857 浏览

ios - Swift:以模态方式呈现并关闭导航控制器

我有一个非常常见的 iOS 应用场景:

该应用程序的MainVC是一个UITabBarController。我在 AppDelegate.swift 文件中将此 VC 设置为 rootViewController:

当用户注销时,我展示了一个带有LandingVC的导航控制器作为导航堆栈的根视图控制器。

LandingVC 中,您单击 Login 按钮,LoginVC被推到堆栈的顶部。

当用户成功登录时,我从 LoginVC 内部解除()导航控制器。

基本上,我正在尝试实现以下流程:

在此处输入图像描述

一切正常,但问题是LoginVC永远不会从内存中释放。因此,如果用户登录和注销 4 次(没有理由这样做但仍有机会),我将在内存中看到 4 次 LoginVC 和 0 次 LandingVC

我不明白为什么LoginVC没有被释放,但LandingVC是。

在我看来(并纠正我的错误),因为导航控制器出现并且它包含 2 个 VC(LandingVCLoginVC),当我在LoginVC中使用 dismiss() 时,它应该关闭导航控制器,因此两者都包含 VC .

  • MainVC : 展示 VC
  • 导航控制器:介绍 VC

来自苹果文档:

呈现视图控制器负责关闭它呈现的视图控制器。如果您在呈现的视图控制器本身上调用此方法,UIKit 会要求呈现的视图控制器处理解除。

我相信当我在LoginVC中关闭导航控制器时出了点问题。有没有办法在用户登录后立即在MainVC(呈现 VC)中触发dismiss()?

PS:使用下面的代码不会成功,因为它会弹出到导航堆栈的根视图控制器,即 LandingVC;而不是 MainVC。

任何帮助将非常感激!

=====================================

我的 LoginVC 代码:

0 投票
2 回答
1212 浏览

ios - 视图控制器不会立即关闭并呈现新的视图控制器

一旦 QRCode 阅读器被关闭,我试图呈现一个视图控制器,但是当这样做时,QRCode 阅读器视图控制器会再次出现。下面的代码片段显示了方法以及我如何关闭视图以及我如何尝试呈现下一个视图控制器。关于为什么当我尝试呈现不同的控制器时 QR 阅读器视图控制器不断呈现自己的任何想法。

0 投票
1 回答
71 浏览

ios - 我怎样才能解雇第二个在第一个 vc 上模态呈现的第一个 vc

我有一个名为 "firstVC" 的视图控制器和另一个名为 "secondVC" 的视图控制器。secondVC 将在第一个 vc 上模态显示 当用户按下 secondVC 上的按钮时,我想关闭 firstVC 和 secondVC 我在这里调用该方法 但它确实执行 但是在 secondVC 中什么都不会发生 这会发生

如果您建议我使用委托,请告诉我如何完全使用它?我不知道我应该在 firstVC 中放什么,或者我应该在 secondVC 中放什么

还有一件事

在其他一些情况下,我需要在 firstVC 中执行 json,当 json 完成时,两个视图控制器(firstVC 和 secondVC)都被关闭了,我该怎么做呢?

0 投票
3 回答
288 浏览

swift - 呈现后无法关闭视图控制器

呈现标签栏控制器后,我无法关闭标签栏控制器。在不删除应用程序的情况下重新安装后,我什至无法点击我的按钮。需要卸载并重新安装应用程序,然后我才能点击按钮

我已经尝试过其他一些关闭标签栏控制器的方法,但仍然无法关闭控制器。

这是我目前在登录后展示控制器的方式

这是我目前解雇控制器的方式

这是我的根视图

0 投票
0 回答
485 浏览

ios - 关闭视图控制器时隐藏插座

在我的应用程序中,我有一个屏幕,它就像一个提交表单,其中包含下拉选择器、文本字段和按钮。有两个按钮,一个是从图库中选择图像,另一个是从相机中选择图像。我的问题是在填写完所有文本字段后,我从图库中挑选了一张图片,然后从显示的图库屏幕中解散了。我所有的网点都不可见,这意味着变得透明。这仅在 iOS 12 版本中发生,但在 iOS 11 版本中运行正常。请帮忙。我的屏幕如下。

上传图片前

上传图片之前

上传图片后

上传图片后如下图。

编码语言是客观的 C.

我的网点如下。

我的解雇代码如下。

当我尝试在 View 调试器中查看时出现错误,如下所示。

错误:无法捕获视图层次结构。详细信息:日志标题:数据源表达式执行失败。日志详细信息:(空)

记录方法:-[DBGDataSourceConnectionLibViewDebugger _executeLLDBExpression:forRequest:onPotentialThread:iteration:]_block_invoke_2 方法:-[DBGViewDebugger updateDebugHierarchy]_block_invoke_2 请在http://bugreport.apple.com提交错误,并附上此警告消息和您可以提供的任何有用信息。2018-11-16 15:12:32.872415+0530 NTUCAdeptCliniFlex[213:3848] 错误:DebugHierarchyRequest - 无法取消归档请求数据并出现错误:错误域 = NSCocoaErrorDomain 代码 = 3840“JSON 文本未以数组或对象和选项开头允许未设置的片段。” UserInfo={NSDebugDescription=JSON 文本没有以数组或对象开头,并且允许未设置片段的选项。}

即使屏幕是空白的,当我单击某处时,它也会显示如下。

当我点击屏幕上的某个地方时

当我点击屏幕上的某个地方时

Xcode 9.2

上面的代码用于从图库中选择图像。

即使我使用了视图层次结构调试器,它看起来也是空白的。请检查以下附件 此图像来自视图层次结构

0 投票
1 回答
259 浏览

ios - 如何在 swift 中关闭所有以模态方式呈现在彼此前面的视图控制器并展开 segue?

所以我有一个主视图控制器,视图控制器将呈现在彼此的前面,当用户单击最后一个视图控制器中的按钮时,我希望关闭所有呈现的模态视图控制器,所以我使用了这段代码但我没有得到结果

我想使用 unwind segue 退出但是还有另一个问题,最后一个视图控制器将在许多不同的情况下多次出现,所以我只是关闭所有呈现的模态视图控制器。这种情况我宁愿不使用 navigationController 但如果我有使用它请告诉我我应该在哪里使用它?

0 投票
2 回答
312 浏览

ios - 在 iOS Swift 中使用材料设计对话框时关闭未执行的视图控制器

我正在为我用 swift 编写的 iOS 应用程序使用材料设计对话框。以下是材料设计对话框的简要文档:https ://material.io/develop/ios/components/dialogs/

我有一个包含 1 个动作的对话框,在动作的完成块中,我想关闭视图控制器并返回到前一个视图控制器。问题是关闭视图控制器不起作用。除了关闭视图控制器之外,完成块中写入的所有指令(例如打印某些内容)都会执行。

这是我的代码:

如果您能帮我解决问题,我将不胜感激。提前致谢 !

0 投票
1 回答
113 浏览

ios - IOS 中关闭 ViewController 的按钮处理程序语法

我在代码中创建了一个自定义 UIBarButton 来关闭自定义 viewController。但是,编译器不喜欢我的语法。

下面是创建 UIBarButtonItem 的代码:

编译器的错误是:'Expected :'

有一个修复选项insert :。如果我选择修复,它将选择器更改为:

action:@selector(dismissVC: controller:)];

这没有意义,也给出了警告'Undeclared Selector"

我究竟做错了什么?

注意:这是在 appDelegate 中发生的,所以我不能使用 self 来关闭 VC。

0 投票
0 回答
41 浏览

swift - 不应该关闭(nsviewcontroller 方法来关闭视图控制器)是类方法吗?

苹果文档说,dismiss(viewcontroller) 会关闭参数中传递的视图控制器。目前我只能在 NSViewController 实例上调用此方法。这个方法不应该是一个类方法,这样我们就不必在创建实例或使用相同的实例后调用dismiss(_)...

不应该被解雇(_)被调用

NSViewController.dismiss(vc) 而不是 NSViewController.init().dismiss(vc) 或 vc.dismiss(vc)??

还是有特定原因为什么它是实例方法

0 投票
1 回答
162 浏览

ios - 如何使用导航控制器关闭两个视图控制器?

我有三个相关的视图,它们都连接到导航控制器,带有推送序列(我也使用 prepare for segue 存储了所有三个数组)。所以我想使用dismiss,因为我不想更改视图控制器中使用的已经存在的存储数组。

所以我在 viewcontroller C ,我试图回到 A。

在此之前我一直使用self.dismiss(animated: true, completion: nil)这在关闭视图 B 时效果很好,但我想去 A。

我也尝试过使用:

但是,这不起作用,并产生此错误:

pushViewController:animated:在现有过渡或演示发生时调用;导航堆栈将不会更新。

有什么解决办法吗?

我想去viewcontroller A的原因是因为在Viewcontroller C上更新某些东西时Viewcontroller B中有一个错误,所以临时的解决方案是去A,然后重新加载tableview。