问题标签 [uipresentingcontroller]

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 回答
1207 浏览

objective-c - 当使用 UIPresentationController 呈现控制器时,不会在“呈现控制器”上调用 viewWillDisappear/viewDidDisappear

UIPresentationController当使用声明presentationStyle.FullScreenor时.OverFullScreen,我找不到确定的答案,view(Will|Did)Disappear在呈现控制器上没有调用。

我看到了一些手动调用的建议beginAppearanceTransition- 但这似乎是容器控制器的无关 API。有谁知道如何正确实施它?

view(Will|Did)Appear在呈现的控制器上正常调用,但这似乎是将视图控制器的视图添加到层​​次结构的副作用

没有太多的文档UIPresentationController.presentationStyle,我希望在消息传递呈现视图控制器时影响 UIKit 的行为,而不仅仅是“呈现内容的外观”。

0 投票
1 回答
780 浏览

ios - IOS/Objective-C:在呈现视图控制器中设置属性

当您使用代码创建模态视图控制器时,模态控制器能够访问呈现控制器。

请阅读以下内容。这是问题的症结所在。我不想使用代表。

根据Apple 文档

当您使用 present(_:animated:completion:) 方法以模态方式(显式或隐式)呈现视图控制器时,呈现的视图控制器将此属性设置为呈现它的视图控制器。

我想设置呈现视图控制器的属性值。但是,我不会在代码中创建 VC。我使用按钮的segue。

这给出了错误:在 UIViewController 类型的对象上找不到属性 afterAdd:

其中属性 afterAdd 设置如下:

当链接是通过类似于上面的情节提要并且不涉及使用委托方法时,是否有任何方法可以在呈现视图控制器中设置属性的值?

0 投票
0 回答
1161 浏览

swift - 以编程方式从显示导航堆栈中显示和关闭模态视图控制器

我使用 UINavigationController 作为 rootViewController 并且有一些导航层次结构问题。我从 show segue 状态以模态方式呈现 viewController,但是当我关闭模态时,它会将应用程序返回到 viewDidAppear navigationController 状态 - 这是应用程序启动状态。我认为这是因为即使我从显示导航堆栈中的第二个视图调用 presentViewController 函数,模态也由父 rootViewController 处理,因此当模态被解除时,它返回到 UINavigationController 的 viewDidAppear 状态。我希望模式被解除并返回到呈现模式的视图控制器(显示 segue 堆栈中的第二个屏幕)。我在这里先向您的帮助表示感谢!

// 根视图控制器

// 家庭控制器

// tableviewcontroller 按钮被点击以呈现 viewController - 此 tableViewController 是显示导航堆栈中的第二个

// modal viewController 被关闭并将用户返回到 tableview * 不是 rootViewController 应用程序加载状态

0 投票
5 回答
8061 浏览

ios - iOS - 关闭呈现的视图控制器在其视图之外触摸

我有一个CustomPresentationController带有自定义动画的进出动画;

这个特定的控制器被呈现出来,在屏幕尺寸的 50% 处更少,当我呈现它时,我添加了一个阴影灰色视图,presentingViewController因此它增加了一些深度。

presentedViewController如果我点击我调用默认方法的cancel按钮,我只能关闭。NavBardismiss(:)

我想要完成的是检测 外面的水龙头presentedViewController,也许在灰色区域内,所以我可以关闭presentedViewController,有点像关闭 anActionSheet但我没能做到。让我解释一下我到目前为止所做的尝试。

我尝试将 a 添加UITapGestureRecognizer到阴影灰色视图,但由于我呈现的是不同的控制器,因此应用程序引擎可能会认为,由于阴影视图不在顶层层次结构视图中,它可能无法访问,因此它“阻塞”识别器 - 每当我点击它时,手势句柄都不会触发。

我现在正在实施另外一个向下滑动来关闭,我可以很容易地做到这一点,但我真的希望点击外部功能也能正常工作。

关于如何解决这个问题的任何提示?

应用程序图像如下:

截屏

0 投票
1 回答
29 浏览

ios - unwindFrom 的线程问题

我的问题的高级摘要:

我有一个 UITableViewController (TVC1),它执行 performSegue 来调用静态 UITableViewController (TVC2),以便用户可以输入详细信息。在 TVC2 上按下一个名为“添加另一个”的按钮后,我希望 TVC2 保存其数据并再次调用以添加另一条记录。

细节:

我有一个实现此数据模型的 tableViewController (TVC1):

显示可能如下所示:

例如,当我想通过单击详细信息行 5 来编辑详细信息时,我performSeguedidSelectRowAt.

TVC1.prepareForSegue我提供 TVC1 作为 TVC2 的代表,可以添加/编辑该细节。我还将要编辑的细节数据提供给 TVC2 的属性。

在 TVC2 上 - 提供详细信息后 - 用户可以单击工具栏中的保存按钮,这将保存数据并将他带回 TVC1。或者,在可以输入详细信息的表格末尾,我有一个按钮:

  • 添加另一个细节

这个想法是用户被直接带到一个新屏幕,他们可以在其中为同一组添加另一个详细信息。所以基本上在 TVC2 消失后,它应该会再次出现以添加新的细节。

在 TVC2 中,我将此按钮链接到unwindFromTVC1 上的方法。然后在prepareForSegueTVC2 中,我调用委托 (TVC1) 上的协议方法以返回编辑的详细信息,并提供一个调用结构NextAction来通知根 TVC1 它的下一步应该是什么。在这种情况下,它应该在同一组中添加另一个细节。

然后在unwindFromTVC1 的方法中,我查看nextAction并启动下一个performSegue.

我不知道其他地方可以做到这一点。对我来说,这是我可以展示下一个动作的最后一个钩子,再次是 TVC2。

这会导致奇怪的行为。它似乎工作一次,但不是第二次。

调试显示(=====> 行是我自己的打印调试行):

注意错误/警告:

但我确实看到了 TVC2 的细节。但是当我再次单击该按钮时,它会显示根 TVC1 而不是 TVC2。xcode 现在说:

我觉得这与线程有关——可能在TVC1.unwindFromTVC2 的范围内运行。

当我编辑TVC1.unwindFrom和替换时:

... 和:

一切正常。

但:

  1. 我不明白发生了什么。
  2. 我无法评估我正在做的事情是否是线程安全的。例如:我是否在 TVC2 关闭和 TVC1 同时调用 TVC2 之间引入了竞争条件?

谁能照亮正在发生的事情?

0 投票
1 回答
42 浏览

ios - Swift 中的 iOS 新接触式 Segue

我正在尝试模拟两个视图控制器之间的 iOS 联系人。

我有一个简单的Person课程:

和 aUIViewController包含一个 的数组Person,该数组嵌入在 a 中UINavigationController

此控制器使用Show seguePersonViewController来显示selectedPerson

PeopleViewController也可以Person在数组中添加一个新的Person。以模态NewPersonViewController方式呈现,但是:

如果Person添加了新的,我想NewPersonViewController关闭但在导航堆栈的一部分中显示Person的。PersonViewController我最好的猜测是:

但是,(1)我不太高兴UINavigationController像我预期self.presentingViewController的那样强迫沮丧PeopleViewController?并且(2),闭包中是否存在内存泄漏,正如我使用weak var pvc = self.presentingViewControllerpvc但不是cvc?或者,最后(3)有没有更好的方法来做到这一点?

非常感谢您的任何帮助、建议等。

0 投票
1 回答
30 浏览

ios - 隐藏故事板的切换

在我的应用程序中,我有 2 个故事板:OnboardingMain。当用户第一次打开应用程序时 -将显示入职故事板。之后,他按下一个按钮,我向他展示了带有以下代码的Main Storyboard:

当用户切换故事板时,我想制作自定义动画。为此 - 我创建了简单的视图,我在这样的所有内容之上呈现:

此视图运行良好,但仅就一个 Storyboard 而言,它涵盖了应用程序更改屏幕时的所有内容。

但是当我尝试切换故事板时 - 这个视图被新呈现的故事板覆盖。

我还尝试以这种方式呈现视图并将其放在前面:

但这也行不通。

如何在过渡期间通过呈现自定义创建的视图来隐藏故事板的切换?将不胜感激任何帮助。