問題涉及AddItemView
,它由其代表以模態方式呈現幷包含tableView。當用戶從tableView中選擇一個項目時,它會觸發代表的操作。根據服務器的響應,委託人可以在當前模態之上顯示另一個模態視圖或UIAlertView。從當前模態的代表出現UIAlertView
重要說明:需要在模態仍在屏幕上時顯示此UIAlertView。包含tableView的模態表示不能在用戶選擇後被解散,因爲用戶需要能夠從表中選擇多個項目,並逐個將它們發回給委託進行處理。
目前,UIAlerView沒有被顯示,我懷疑這是因爲已經呈現的模態正在阻止這種情況。當委託人坐在模式下並且沒有駁回該模式時,是否有解決方法來向代表提供UIAlertView?
的UIAlertView中目前由代表顯示像這樣,而委託坐在一個模式下:
var alert = UIAlertController(title: "Error", message: "Error message from server", preferredStyle: UIAlertControllerStyle.Alert)
alert.addAction(UIAlertAction(title: "actionOne", style: .Default, handler: { action in
// perform some action
}))
alert.addAction(UIAlertAction(title: "actionTwo", style: .Destructive, handler: { action in
// perform some action
}))
self.presentViewController(alert, animated: true, completion: nil)
這裏是當UIAlertView中由代表介紹時返回的錯誤:
Warning: Attempt to present <UIAlertController: 0x156da6300> on <productionLINK_Scanner.ContainerContents: 0x156e65b20> whose view is not in the window hierarchy!
如果可能,請使用Swift提供答案。
在控制器生命週期中的哪個位置,您是否嘗試顯示警報控制器?將控制器呈現在另一個之上沒有問題。另外,您不需要關閉處理程序中的警報控制器,它會自動解除。 – 2015-03-31 16:24:10
@LeoNatan當用戶在顯示的模式的tableView中選擇一行時,UIAlertView將從委託中顯示。需要注意的是,模態表示的tableView(它實際上是嵌入在UIView中的tableView)需要保留在屏幕上 - 它不能被解散,因爲用戶需要能夠從表中選擇多個項目並將它們發回給代表。 – 2015-03-31 18:34:20