问题标签 [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.
objective-c - 当使用 UIPresentationController 呈现控制器时,不会在“呈现控制器”上调用 viewWillDisappear/viewDidDisappear
UIPresentationController
当使用声明presentationStyle
为.FullScreen
or时.OverFullScreen
,我找不到确定的答案,view(Will|Did)Disappear
在呈现控制器上没有调用。
我看到了一些手动调用的建议beginAppearanceTransition
- 但这似乎是容器控制器的无关 API。有谁知道如何正确实施它?
view(Will|Did)Appear
在呈现的控制器上正常调用,但这似乎是将视图控制器的视图添加到层次结构的副作用
没有太多的文档UIPresentationController.presentationStyle
,我希望在消息传递呈现视图控制器时影响 UIKit 的行为,而不仅仅是“呈现内容的外观”。
ios - IOS/Objective-C:在呈现视图控制器中设置属性
当您使用代码创建模态视图控制器时,模态控制器能够访问呈现控制器。
请阅读以下内容。这是问题的症结所在。我不想使用代表。
根据Apple 文档:
当您使用 present(_:animated:completion:) 方法以模态方式(显式或隐式)呈现视图控制器时,呈现的视图控制器将此属性设置为呈现它的视图控制器。
我想设置呈现视图控制器的属性值。但是,我不会在代码中创建 VC。我使用按钮的segue。
这给出了错误:在 UIViewController 类型的对象上找不到属性 afterAdd:
其中属性 afterAdd 设置如下:
当链接是通过类似于上面的情节提要并且不涉及使用委托方法时,是否有任何方法可以在呈现视图控制器中设置属性的值?
swift - 以编程方式从显示导航堆栈中显示和关闭模态视图控制器
我使用 UINavigationController 作为 rootViewController 并且有一些导航层次结构问题。我从 show segue 状态以模态方式呈现 viewController,但是当我关闭模态时,它会将应用程序返回到 viewDidAppear navigationController 状态 - 这是应用程序启动状态。我认为这是因为即使我从显示导航堆栈中的第二个视图调用 presentViewController 函数,模态也由父 rootViewController 处理,因此当模态被解除时,它返回到 UINavigationController 的 viewDidAppear 状态。我希望模式被解除并返回到呈现模式的视图控制器(显示 segue 堆栈中的第二个屏幕)。我在这里先向您的帮助表示感谢!
// 根视图控制器
// 家庭控制器
// tableviewcontroller 按钮被点击以呈现 viewController - 此 tableViewController 是显示导航堆栈中的第二个
// modal viewController 被关闭并将用户返回到 tableview * 不是 rootViewController 应用程序加载状态
ios - iOS - 关闭呈现的视图控制器在其视图之外触摸
我有一个CustomPresentationController
带有自定义动画的进出动画;
这个特定的控制器被呈现出来,在屏幕尺寸的 50% 处更少,当我呈现它时,我添加了一个阴影灰色视图,presentingViewController
因此它增加了一些深度。
presentedViewController
如果我点击我调用默认方法的cancel
按钮,我只能关闭。NavBar
dismiss(:)
我想要完成的是检测 外面的水龙头presentedViewController
,也许在灰色区域内,所以我可以关闭presentedViewController
,有点像关闭 anActionSheet
但我没能做到。让我解释一下我到目前为止所做的尝试。
我尝试将 a 添加UITapGestureRecognizer
到阴影灰色视图,但由于我呈现的是不同的控制器,因此应用程序引擎可能会认为,由于阴影视图不在顶层层次结构视图中,它可能无法访问,因此它“阻塞”识别器 - 每当我点击它时,手势句柄都不会触发。
我现在正在实施另外一个向下滑动来关闭,我可以很容易地做到这一点,但我真的希望点击外部功能也能正常工作。
关于如何解决这个问题的任何提示?
应用程序图像如下:
ios - unwindFrom 的线程问题
我的问题的高级摘要:
我有一个 UITableViewController (TVC1),它执行 performSegue 来调用静态 UITableViewController (TVC2),以便用户可以输入详细信息。在 TVC2 上按下一个名为“添加另一个”的按钮后,我希望 TVC2 保存其数据并再次调用以添加另一条记录。
细节:
我有一个实现此数据模型的 tableViewController (TVC1):
显示可能如下所示:
例如,当我想通过单击详细信息行 5 来编辑详细信息时,我performSegue
在didSelectRowAt
.
在TVC1.prepareForSegue
我提供 TVC1 作为 TVC2 的代表,可以添加/编辑该细节。我还将要编辑的细节数据提供给 TVC2 的属性。
在 TVC2 上 - 提供详细信息后 - 用户可以单击工具栏中的保存按钮,这将保存数据并将他带回 TVC1。或者,在可以输入详细信息的表格末尾,我有一个按钮:
- 添加另一个细节
这个想法是用户被直接带到一个新屏幕,他们可以在其中为同一组添加另一个详细信息。所以基本上在 TVC2 消失后,它应该会再次出现以添加新的细节。
在 TVC2 中,我将此按钮链接到unwindFrom
TVC1 上的方法。然后在prepareForSegue
TVC2 中,我调用委托 (TVC1) 上的协议方法以返回编辑的详细信息,并提供一个调用结构NextAction
来通知根 TVC1 它的下一步应该是什么。在这种情况下,它应该在同一组中添加另一个细节。
然后在unwindFrom
TVC1 的方法中,我查看nextAction
并启动下一个performSegue
.
我不知道其他地方可以做到这一点。对我来说,这是我可以展示下一个动作的最后一个钩子,再次是 TVC2。
这会导致奇怪的行为。它似乎工作一次,但不是第二次。
调试显示(=====> 行是我自己的打印调试行):
注意错误/警告:
但我确实看到了 TVC2 的细节。但是当我再次单击该按钮时,它会显示根 TVC1 而不是 TVC2。xcode 现在说:
我觉得这与线程有关——可能在TVC1.unwindFrom
TVC2 的范围内运行。
当我编辑TVC1.unwindFrom
和替换时:
... 和:
一切正常。
但:
- 我不明白发生了什么。
- 我无法评估我正在做的事情是否是线程安全的。例如:我是否在 TVC2 关闭和 TVC1 同时调用 TVC2 之间引入了竞争条件?
谁能照亮正在发生的事情?
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.presentingViewController
的pvc
但不是cvc
?或者,最后(3)有没有更好的方法来做到这一点?
非常感谢您的任何帮助、建议等。
ios - 隐藏故事板的切换
在我的应用程序中,我有 2 个故事板:Onboarding和Main。当用户第一次打开应用程序时 -将显示入职故事板。之后,他按下一个按钮,我向他展示了带有以下代码的Main Storyboard:
当用户切换故事板时,我想制作自定义动画。为此 - 我创建了简单的视图,我在这样的所有内容之上呈现:
此视图运行良好,但仅就一个 Storyboard 而言,它涵盖了应用程序更改屏幕时的所有内容。
但是当我尝试切换故事板时 - 这个视图被新呈现的故事板覆盖。
我还尝试以这种方式呈现视图并将其放在前面:
但这也行不通。
如何在过渡期间通过呈现自定义创建的视图来隐藏故事板的切换?将不胜感激任何帮助。