iOS警告:当演示或解散正在进行时,试图从视图控制器中解散



我创建了一个UIImageView当点击它时,会弹出一个UIActionSheet

@IBOutlet weak var avatarImageView: UIImageView!
@IBAction func tapUIImageViewHandler(sender: UITapGestureRecognizer) {
    var popMenu: UIActionSheet = UIActionSheet(title: "Upload user avatar", delegate: self, cancelButtonTitle: "Cancel", destructiveButtonTitle: nil, otherButtonTitles: "Choose from library", "Take photo")
    popMenu.showInView(self.view)
}
func actionSheet(popMenu: UIActionSheet!, clickedButtonAtIndex buttonIndex: Int){
    println("click at index (buttonIndex)")
    switch buttonIndex {
    case 2:
        takePhoto()
    case 1:
        chooseFromLib()
    default:
        break
    }
}

但是当我在模拟器上运行它时,当我点击UIActionSheet上的按钮后,我得到

警告:试图在演示时从视图控制器中解散或解雇正在进行中!

有谁能帮我一下吗?谢谢!

请在演示动作表时实现小延迟。

[self performSelector:@selector(presentActionsheet) withObject:nil afterDelay:0.2f];

在我看来,这是一个bug(您应该提交一个bug报告)。我在以下情况下测试了一个更简单的项目(只有一个按钮和一个打开ActionSheet的操作,没有委托):

  • Swift XCode Beta 4 ->警告
  • ObjC XCode Beta 4 -> warning
  • ObjC Xcode 5.1.1 -> OK

顺便说一下,我记得你,因为iOS8 ActionSheet被UIAlertController取代,UIAlertControllerStyle设置为ActionSheet。但我们必须继续使用ActionSheet,这也是事实,特别是因为我们可能仍然以版本为目标。8 .

最新更新