试图退出我的应用程序并进入设置,但它似乎回旋镖......有点像
Trying to switch out of my app and into settings, but it seems to boomerang back...sort of
因此,当我遇到 CKErrorCode.NotAuthenticated
问题时,我使用以下代码行切换到“设置”:
let url = NSURL(string: UIApplicationOpenSettingsURLString)
let result = UIApplication.sharedApplication().openURL(url)
我会暂时在上下文中显示代码。 起初似乎还不错(我的应用程序进入后台),但后来我又回到了我的应用程序的新版本。后退按钮展开到“设置”(已相应标记),然后我可以从那里返回到原始应用程序。 除了从“设置”打开的我的应用程序迭代无法加载任何内容(它有标题,但除此之外是空白屏幕),其他一切正常。
这是我第一次创建 XIB,因此可能需要牢记这一点。我在以下情况下触发的 switch 语句中进行错误处理:
case CKErrorCode.NotAuthenticated.rawValue:
//Should check account status here...
// If account not logged in...
let message = "Your device needs to be logged in to your iCloud Account in order for Voyager to work correctly. After clicking 'OK' you can login at Settings/iCloud..."
presentAlertMessageToUser(message) { action in
if let goToSettingsURL = NSURL(string: UIApplicationOpenSettingsURLString) {
print("E3")
dispatch_async(dispatch_get_main_queue()) {
let result = UIApplication.sharedApplication().openURL(goToSettingsURL)
print("E4: \(result)")
}
}
}
如您所见,我在标题为 presentAlertMessageToUser(message: String?, handler: ((UIAlertAction) -> Void)?)
的方法中介绍了 UIAlertViewController
。它本身似乎没有任何问题,但你可以在这里看到它:
private func presentAlertMessageToUser(message: String?, handler: ((UIAlertAction) -> Void)?) {
print("G0")
let alert = UIAlertController(title: "Connection Error", message: message, preferredStyle: .Alert)
alert.addAction(UIAlertAction(title: "Cancel", style: .Cancel, handler: nil))
if let completionBlock = handler {
alert.addAction(UIAlertAction(title: "OK", style: .Default, handler: completionBlock))
} else {
alert.addAction(UIAlertAction(title: "OK", style: .Default, handler: nil))
}
dispatch_async(dispatch_get_main_queue()) {
print("G2")
unowned let me = self
me.presentViewController(alert, animated: true, completion: nil)
}
print("G1")
}
对于 switch 语句中的这种错误情况,我禁用了重试尝试,并且我还验证了它没有多次执行序列的任何部分。如果代码的任何其他部分有帮助,我可以 post 将其连同输出到我的控制台,我在控制台使用这些打印行来监视应用程序的进度。
好吧,这显然是个愚蠢的问题。我希望在设置处下车,而不是我自己的应用程序的设置(它是空的并且显示为空白)。
因此,当我遇到 CKErrorCode.NotAuthenticated
问题时,我使用以下代码行切换到“设置”:
let url = NSURL(string: UIApplicationOpenSettingsURLString)
let result = UIApplication.sharedApplication().openURL(url)
我会暂时在上下文中显示代码。 起初似乎还不错(我的应用程序进入后台),但后来我又回到了我的应用程序的新版本。后退按钮展开到“设置”(已相应标记),然后我可以从那里返回到原始应用程序。 除了从“设置”打开的我的应用程序迭代无法加载任何内容(它有标题,但除此之外是空白屏幕),其他一切正常。
这是我第一次创建 XIB,因此可能需要牢记这一点。我在以下情况下触发的 switch 语句中进行错误处理:
case CKErrorCode.NotAuthenticated.rawValue:
//Should check account status here...
// If account not logged in...
let message = "Your device needs to be logged in to your iCloud Account in order for Voyager to work correctly. After clicking 'OK' you can login at Settings/iCloud..."
presentAlertMessageToUser(message) { action in
if let goToSettingsURL = NSURL(string: UIApplicationOpenSettingsURLString) {
print("E3")
dispatch_async(dispatch_get_main_queue()) {
let result = UIApplication.sharedApplication().openURL(goToSettingsURL)
print("E4: \(result)")
}
}
}
如您所见,我在标题为 presentAlertMessageToUser(message: String?, handler: ((UIAlertAction) -> Void)?)
的方法中介绍了 UIAlertViewController
。它本身似乎没有任何问题,但你可以在这里看到它:
private func presentAlertMessageToUser(message: String?, handler: ((UIAlertAction) -> Void)?) {
print("G0")
let alert = UIAlertController(title: "Connection Error", message: message, preferredStyle: .Alert)
alert.addAction(UIAlertAction(title: "Cancel", style: .Cancel, handler: nil))
if let completionBlock = handler {
alert.addAction(UIAlertAction(title: "OK", style: .Default, handler: completionBlock))
} else {
alert.addAction(UIAlertAction(title: "OK", style: .Default, handler: nil))
}
dispatch_async(dispatch_get_main_queue()) {
print("G2")
unowned let me = self
me.presentViewController(alert, animated: true, completion: nil)
}
print("G1")
}
对于 switch 语句中的这种错误情况,我禁用了重试尝试,并且我还验证了它没有多次执行序列的任何部分。如果代码的任何其他部分有帮助,我可以 post 将其连同输出到我的控制台,我在控制台使用这些打印行来监视应用程序的进度。
好吧,这显然是个愚蠢的问题。我希望在设置处下车,而不是我自己的应用程序的设置(它是空的并且显示为空白)。