我正在使用Xcode 9.4.1 (9F2000)
和Swift
。
我在didFinishLaunchingWithOptions
中的AppDelegate
中有这个名称:
DispatchQueue.main.asyncAfter(deadline: .now() + 20.0, execute: {
self.selectUser()
})
selectUser()
将调用一个函数,该函数会发出警报以让用户选择其姓名。
在不延迟的情况下调用selectUser()
时,ViewController(我想)尚未准备好加载,并且收到如下消息:
2018-07-17 16:51:42.576783 + 0200 MyApp [2492:824301]警告: 尝试呈现 他的观点不在 窗口层次结构!
我认为有一种更好的方法,例如:如果已准备好加载应用程序以显示UIAlertController,请调用selectUser()
。
您知道如何执行此操作吗?
答案 0 :(得分:1)
您需要<?xml version="1.0" encoding="UTF-8"?>
<object href="https://services470.zuora.com/apps/api/describe/Invoice">
<name>Invoice</name>
<label>Invoice</label>
<fields>
<field>
<name>AccountId</name>
<label>Account ID</label>
<selectable>true</selectable>
<createable>true</createable>
<updateable>false</updateable>
<filterable>true</filterable>
<custom>false</custom>
<maxlength></maxlength>
<required>true</required>
<type>text</type>
<contexts>
<context>soap</context>
</contexts>
</field>
<field>
<name>AdjustmentAmount</name>
<label>Adjustment Amount</label>
<selectable>true</selectable>
<createable>false</createable>
<updateable>false</updateable>
<filterable>true</filterable>
<custom>false</custom>
<maxlength></maxlength>
<required>true</required>
<type>decimal</type>
<contexts>
<context>soap</context>
<context>export</context>
</contexts>
</field>
<!-- All fields for Invoice...ETC -->
</fields>
</object>
,但是要确保它也在从后台返回时被调用,因此,如果您不希望再次调用它,请将代码包装在一次var中
applicationDidBecomeActive
答案 1 :(得分:1)
由于您需要具有root viewController(storyboard或程序化),所以最简单的方法是将警报显示在viewController内部,因为如果完成didFinishLaunchingWithOptions
,则将显示“ root” -viewController.view