iPhone 在 iOS 10 中无法正常工作的弹出窗口?

Segue to popover for iPhone not working in iOS 10?

我想在 iOS 10 中切换到弹出窗口,这段代码过去在 iPhone 上可以正常工作,但现在不行(它显示全屏),我做错了什么? segue 设置为 "Present As Popover".

 override func prepare(for segue:UIStoryboardSegue, sender:AnyObject!) {  
    if segue.identifier == "about" {  
        let aboutController = segue.destination as! AboutController  
        aboutController.preferredContentSize = CGSize(width:300, height:440)  

        let popoverController = aboutController.popoverPresentationController  

        if popoverController != nil {  
            popoverController!.delegate = self  
            popoverController!.backgroundColor = UIColor.black  
        }  
    }  
}  

func adaptivePresentationStyleForPresentationController(controller: UIPresentationController) -> UIModalPresentationStyle {  
    return .none  
}  

弹出框是 iPad 独有的功能。 UIKit 足够聪明,可以确定它应该在 iPhone/iPod.

上以模态方式呈现它

许多功能已在 Swift 3 中重命名,包括 adaptivePresentationStyleForPresentationController - 现在是 adaptivePresentationStyle(for:)

将代码更改为

func adaptivePresentationStyle(for controller:UIPresentationController) -> UIModalPresentationStyle {
    return .none
}

由于您的函数名称不匹配,因此未被调用,并且因为它是协议中的可选函数,所以您没有收到警告。