问题标签 [uipresentationcontroller]

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

swift - 除了帮助 iOS 中的特征收集之外,还需要 UIPresentationController 吗?

UIPresentationController 与仅使用添加子视图并为要呈现的视图设置动画相比有什么好处?它必须遵守的所有协议似乎有点麻烦,许多人仍然喜欢用简单的帧动画来呈现他们的视图。Apple 引入课程的逻辑是什么?

0 投票
1 回答
790 浏览

ios - 无法关闭 NavigationController

大家好,我在关闭 NavigationController 时遇到问题。这段代码对我不起作用。当我尝试在我的 ViewController 中调用它时

这就是我在我的第一个 ViewController 中所做的,我只需打开具有自定义转换的 ProfileViewController。

我有一个自定义 NavigationController 类,它调用 NavigationControllerTransition 以使其碰巧从屏幕边缘滑动以进行自定义转换。

所以我可以滑动来打开或关闭我的 ViewController 并且过渡效果很好。唯一的问题是当我尝试使用 UIButton 关闭 ViewController 时。NavigationController 不会关闭和冻结。有小费吗 ?:(

0 投票
2 回答
1875 浏览

ios - 在预设演示之前失去对 transitioningDelegate 的引用

在 Xcode beta 2 和 iOS 10 beta 2 之前,我有一个可以正常工作的自定义 UIPresentationController。我没有更改任何代码,但演示文稿现在以标准模式演示文稿呈现。

UIPresentationController 的 Apple 示例代码中有一条注释说:

对于将使用自定义演示控制器的演示,该演示控制器也可以是 transitioningDelegate。这避免了在源视图控制器中引入另一个对象或实现。

transitioningDelegate 不持有对其目标对象的强引用。为了防止在调用 -presentViewController:animated:completion 之前释放presentationController:将NS_VALID_UNTIL_END_OF_SCOPE 属性附加到声明中。

我在演示前后检查了演示视图控制器上的 transitioningDelegate。在它之前是我的自定义 UIPresentationController,但在它之后是 nil。我的猜测是该引用正在发布,但我在 Swift 中找不到与 NS_VALID_UNTIL_END_OF_SCOPE 等效的内容。编辑:我已经验证了 transitioningDelegate 设置到演示之前,然后是 nil 时演示。

我在呈现视图控制器中的代码:

我在 UIPresentationController 中的代码:

0 投票
1 回答
752 浏览

ios - 如何在 UIStoryboardSegue 中实现 UIViewControllerTransitioningDelegate?

这就是我现在所做的:

它的效果非常棒。首先,我使用.instantiateViewControllerWithIdentifier:. 控制器以正确的方式呈现:

在此处输入图像描述

但是我需要用我的自定义segue来实现相同的结果:

但它不起作用。为什么?

0 投票
0 回答
185 浏览

ios - UIViewController 在自定义模式演示中充当presentingViewController 需要什么?

Apple 的视图控制器编程指南状态(强调添加):

调用 presentViewController:animated:completion: 方法的视图控制器可能不是真正执行模态呈现的视图控制器。呈现风格决定了视图控制器的呈现方式,包括呈现视图控制器所需的特征。例如,全屏演示必须由全屏视图控制器启动。如果当前呈现的视图控制器不合适,UIKit 会遍历视图控制器层次结构,直到找到合适的。完成模态演示后,UIKit 会更新受影响视图控制器的 presentingViewController 和presentedViewController 属性。

我正在尝试使用 UIPresentationController 子类实现自定义视图控制器演示。当我展示我的视图控制器时:

...该presentingViewController属性是指层次结构中比启动演示的视图控制器更高的视图控制器。这对我说,我没有满足UIModalPresentationStyle.custom它呈现视图控制器的任何神秘要求,所以它去别处寻找。

问题是,我在任何地方都找不到这些要求,也无法弄清楚。我需要在我的演示控制器中引用启动视图控制器。而且,好吧,我可以通过自己提供参考来完全回避这个问题,但我更愿意以正确的方式做事,而不是围绕我无知的错误编写代码。

有谁知道视图控制器在使用时必须做些什么才能成为呈现视图控制器UIModalPresentationStyle.custom?谢谢!

0 投票
1 回答
4612 浏览

ios - 应用程序在 runTransitionForCurrentState 上崩溃,但不知道原因

我试过搜索这个,但没有运气,所以希望有一些大师可能知道答案。

我在 iTunes Connect 中看到我的应用程序因特定堆栈跟踪而崩溃的大量报告,但堆栈跟踪显示没有任何用处。

报告没有模式,发生在 iOS 9.1、9.2、9.3-10 和各种 iPhone 和 iPad 上,也没有任何线索可以帮助重现它。

有没有人经历过这样的事情,并对可能导致它的原因有所了解/怀疑?

0 投票
1 回答
113 浏览

ios - UIPresentationController 没有可见的@interface 声明选择器 initWithPresentingViewController:presentedViewController

我正在观看 WWDC 2014 视频A Look Inside Presentation Controllers
我下载了会话的源代码(用 编写Objective-C),尝试构建它,但出现此错误:

UIPresentationController 没有可见的@interface 声明选择器 initWithPresentingViewController:presentedViewController。

该方法是否假设在UIPresentationController

0 投票
1 回答
1437 浏览

ios - 没有动画的自定义视图控制器演示

我有一些自定义模式演示和自定义控制器要演示(UIViewController 的子类)。它是它自己的过渡委托,并返回一些动画过渡对象和演示控制器。我使用动画过渡对象在呈现时将呈现的视图添加到容器视图中,并在关闭时将其移除,当然还有动画。我使用演示控制器添加一些辅助子视图。

当我向控制器展示并在属性presentViewController中传递 true时,一切正常。animated但是当我想在没有动画的情况下呈现它并传递 false 时,UIKit 只调用presentationControllerForPresentedViewController方法,根本不调用animationControllerForPresentedController。并且只要呈现的视图被添加到视图层次结构中并定位在动画过渡对象中,它永远不会被创建,什么都不会呈现。

我正在做的是检查演示控制器是否设置了动画,如果不是,我手动创建动画转换对象并使其设置视图。

它有效,但我不确定这是否是最好的方法。

文档说,演示控制器应该只负责在过渡期间进行任何额外的设置或动画,并且演示的主要工作应该在动画过渡对象中完成。

是否可以始终在演示控制器中设置视图并仅在动画过渡对象中对其进行动画处理?

有没有更好的方法来解决这个问题?

0 投票
1 回答
1872 浏览

ios - UIPopoverPresentationController 宽度和高度未设置

我正在尝试展示一个弹出框控制器,但由于某种原因,我无法正确设置弹出框的宽度/高度。这是我正在使用的代码:

这是我的代码:

但是popover一直像这样出来:

在此处输入图像描述

0 投票
1 回答
1316 浏览

ios - 将定义PresentationContext 与 UIModalPresentationStyle.custom 一起使用

我正在使用视图控制器包含来管理一组子视图控制器,这些子视图控制器应该能够以自定义方式以模态方式呈现其他视图控制器。

我遇到了一个问题,即当从视图控制器使用时不使用definesPresentationContext该属性UIModalPresentationStyle.custom

例如,我有三个视图控制器:ROOTAB

A是 的孩子ROOT。我想在使用 custom 、和时以B模态方式呈现。AUIPresentationControllerUIViewControllerTransitioningDelegateUIViewControllerAnimatedTransitioning

所以我在控制器的代码中执行以下操作A(注意控制器AdefinesPresentationContext设置为true):

但是,在我的演示控制器(也是我的UIViewControllerAnimatedTransitioning)中,我遇到了以下问题:

在这个函数中,我希望它是fromVCtype A,它实际上是ROOT。尽管A指定definesPresentationContext.

所以我认为这是因为我正在使用UIModalPresentationStyle.custom. 所以我把它改成UIModalPresentationStyle.overCurrentContext

这会导致 iOS 从 正确读取definesPresentationContext属性A,并且我的animateTransition函数现在被正确地从视图控制器调用,但是:

因为我的模态演示样式不再是.custom,所以我的转换委托中的以下方法不再被调用

所以我的演示控制器变得未使用。

我想要一种.custom尊重definesPresentationContext. 这可能吗?我错过了什么吗?

基本上,我想要在当前上下文中自定义模式演示。