亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

iOS 8 iPhone上的UIPopoverPresentationController

iOS 8 iPhone上的UIPopoverPresentationController

iOS
幕布斯6054654 2019-10-09 16:22:16
有誰知道是否UIPopoverPresentationController可以在iPhone上顯示彈出窗口?想知道蘋果是否在iOS 8上添加了此功能,以試圖為iPad和iPhone創建更統一的演示控制器。不確定是否可以從Beta提問/回答問題。在這種情況下,我將其刪除。
查看完整描述

3 回答

?
慕容708150

TA貢獻1831條經驗 獲得超4個贊

您可以UIModalPresentationFullScreen使用adaptivePresentationStyleForPresentationController:通過提供的方法來覆蓋默認的自適應行為(在緊湊的水平環境中,即iPhone)  UIPopoverPresentationController.delegate。


UIPresentationController使用此方法詢問要使用的新演示文稿樣式,在您的情況下,簡單地返回UIModalPresentationNone將導致UIPopoverPresentationController呈現為彈出窗口而不是全屏。


這是一個使用情節提要中的segue設置的彈出窗口示例,從UIBarButtonItem到“ 模態呈現 ”UIViewController


class SomeViewController: UIViewController, UIPopoverPresentationControllerDelegate {


    // override func prepareForSegue(segue: UIStoryboardSegue!, sender: AnyObject!) { // swift < 3.0

    override func prepare(for segue: UIStoryboardSegue, sender: Any?) {

        if segue.identifier == "PopoverSegue" {

            if let controller = segue.destinationViewController as? UIViewController {

                controller.popoverPresentationController.delegate = self

                controller.preferredContentSize = CGSize(width: 320, height: 186)                

            }

        }

    }


    // MARK: UIPopoverPresentationControllerDelegate


    //func adaptivePresentationStyleForPresentationController(controller: UIPresentationController!) -> UIModalPresentationStyle { // swift < 3.0

    func adaptivePresentationStyle(for controller: UIPresentationController) -> UIModalPresentationStyle {

        // Return no adaptive presentation style, use default presentation behaviour

        return .None

    }

}

WWDC 2014會議214“ iOS8中的View Controller Advancement”中提到了此技巧(36:30)

查看完整回答
反對 回復 2019-10-09
?
largeQ

TA貢獻2039條經驗 獲得超8個贊

我找到了一些解決方法。


在Xcode6.1上,使用presentationController.delegate代替popoverPresentationController.delegate。


- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender

{

    if ([segue.identifier compare:@"showPopOver"] == NSOrderedSame) {

        UINavigationController * nvc = segue.destinationViewController;

        UIPresentationController * pc = nvc.presentationController;

        pc.delegate = self;

    }

}


#pragma mark == UIPopoverPresentationControllerDelegate ==

- (UIModalPresentationStyle)adaptivePresentationStyleForPresentationController:(UIPresentationController *)controller

{

    return UIModalPresentationNone;

}

在WWDC 2014“ iOS8中的View Controller Advances”中,以下代碼可以顯示iPhone上的彈出窗口。


- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender

{


    UINavigationController * nvc = segue.destinationViewController;

    UIPopoverPresentationController * pvc = nvc.popoverPresentationController;

    pvc.delegate = self;

}


#pragma mark == UIPopoverPresentationControllerDelegate ==

- (UIModalPresentationStyle)adaptivePresentationStyleForPresentationController:(UIPresentationController *)controller

{

    return UIModalPresentationNone;

}

但是在Xcode 6.1上,這些代碼顯示了FullScreen演示...(nvc.popoverPresentationController為nil)


我懷疑這可能是蘋果的錯誤。


查看完整回答
反對 回復 2019-10-09
  • 3 回答
  • 0 關注
  • 894 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號