2015-12-01 17 views
7

Tôi đang cố gắng tạo cửa sổ bật lên và khi tôi trình bày bộ điều khiển chế độ xem, nền luôn luôn là màu đen và kích thước là toàn màn hình.Cách trình bày PopOver trong iOS9

tôi dường như không thể tìm ra những gì là sai và đây là mã mà tôi có

@IBAction func distancePopOver(sender : UIBarButtonItem){ 

    //a UIViewController that I created in the storyboard 
    let controller = storyboard!.instantiateViewControllerWithIdentifier("distancePopOver") 
    controller.modalPresentationStyle= UIModalPresentationSTyle.PopOver 
    controller.preferredContentSize = CGSizeMake(200,30) 
    self.presentViewController(controller, animated: true, completion: nil) 

    //Configure the Popover presentation controller 
    let popController = (controller.popoverPresentationController)! 
    popController.permittedArrowDirections = UIPopoverArrowDirection.Down 
    popController.barButtonItem = sender 
    popController.delegate = self 
    } 

Bất cứ khi nào tôi bấm vào UIBarButtonItem, nó trình bày quan điểm trên toàn màn hình, nhưng không nên nó được kích thước tôi xác định trong dòng 5?

Trả lời

1

Hiện tại, các cửa sổ bật lên khá là khó tính. Trước tiên, bạn sẽ muốn cấu hình popoverPresentationController trước khi trình bày nó.

Thứ hai, hãy chắc chắn rằng hướng mũi tên của bạn đang trỏ theo cách mũi tên trỏ và không phải là nơi nội dung tương ứng với UIBarButtonItem. Vì vậy, nếu bên trong UIToolbar (và nằm gần cuối màn hình), bạn sẽ muốn .Down nếu không, nếu đó là thanh điều hướng (gần trên cùng), bạn sẽ muốn sử dụng .Up.

@IBAction func distancePopOver(sender : UIBarButtonItem){ 

    //Configure the Popover presentation controller 
    let popController = (controller.popoverPresentationController)! 
    popController.permittedArrowDirections = .Down // .Up 
    popController.barButtonItem = sender 
    popController.delegate = self 

    //a UIViewController that I created in the storyboard 
    let controller = storyboard!.instantiateViewControllerWithIdentifier("distancePopOver") 
    controller.modalPresentationStyle = .Popover 
    controller.preferredContentSize = CGSizeMake(200,30) 

    presentViewController(controller, animated: true, completion: nil) 
} 

Bây giờ nếu bạn đã nhận này đến nay và nó vẫn không làm việc, nó vì hành vi mặc định của popover trong một lớp học kích thước nhỏ gọn là để lấp đầy màn hình. Vì bạn đã thiết lập bộ điều khiển xem của mình làm đại biểu của cửa sổ bật lên, bạn chỉ cần triển khai hàm ủy nhiệm này: adaptivePresentationStyleForPresentationController(_:traitCollection:) và trả về .None cho kiểu trình bày. Điều này sẽ cho phép bạn thậm chí hiển thị một popover tìm kiếm thực sự trên iPhone. Xem bài đăng trên blog của tôi: iPhone Popover để có ví dụ đầy đủ về việc thực hiện việc này.

+1

bit cuối cùng với adaptivePresentationStyleForPresentationController (_: traitCollection :) đã làm điều đó cho tôi. Cảm ơn –

+0

Làm việc tốt trên iPad, nhưng không phải trong iPhone. – Satyam

Các vấn đề liên quan