【发布时间】:2020-01-21 03:33:22
【问题描述】:
为了减少主视图控制器中的代码,我将大多数功能重构为两个子视图控制器。
在其中一个子视图控制器中,用户可以点击触发 ActionSheet 的按钮。我第一次尝试完成这个动作是
- 两个子视图控制器连接到情节提要中的父视图控制器
- 在子视图控制器 1 中创建委托属性。
- 在父视图控制器的 prepareForSegue 中,检查 segue.identifier 是否与子视图控制器匹配,然后将父视图控制器分配为子视图控制器的委托
- 使父视图控制器符合协议,该协议具有接受视图控制器作为参数的方法
- 当用户点击子视图控制器 1 中的按钮时,将调用委托函数,该函数将子视图控制器 1 传递给委托函数并在父视图控制器中引发操作表
- 一旦用户做出动作,子视图控制器的属性就会更新
当我尝试运行时,出现以下错误:Warning: Attempt to present <UIAlertController: 0x7f9bb6029200> on <BudgetSmart.TransactionListViewController: 0x7f9bb5d298b0> while a presentation is in progress!
我尝试 1. 关闭视图控制器,2. 从子视图控制器调用操作表,但错误仍然存在。演示中的视图控制器是指子视图控制器吗?如果是这样,解决这个问题的方法应该是什么?谢谢!
【问题讨论】:
-
我以前见过这个错误,虽然它很少出现。你能提供一些你是如何做到这一点的代码吗?
-
在属性检查器中显示警报控制器的特定视图控制器上打开情节提要,将显示样式更改为全屏,这是快速修复,我将在一段时间内通过适当的实施添加答案。
-
我在设置中添加了更多详细信息。使视图控制器呈现样式全屏导致相同的错误
标签: ios swift uiviewcontroller parent-child