2015-04-21 25 views
5

Tôi đã triển khai lớp con của UISplitViewController trong ứng dụng của mình cho cả hai: iPhoneiPad. Phương pháp được đề cập trong tiêu đề được gọi khi tôi xoay thiết bị theo hướng Landscape đến Portrait. Nó hoạt động thực sự tốt đẹp trừ khi tôi chạy ứng dụng trên iPhone 6 Plus. Tại sao phương pháp này không được gọi là có?Tại sao splitViewController: collapseSecondaryViewController: upPrimaryViewController: không được gọi trên iPhone 6 Plus?

Việc cần làm để phương pháp này hoạt động?

Khi tôi khởi động ứng dụng trên iPhone 6 Plus mọi thứ đều ổn trong cả hai hướng. Nhưng vấn đề là khi tôi xoay iPhone 6 Plus từ Landscape đến Portrait. Trình điều khiển điều hướng của tôi sẽ không hoạt động như mong đợi.

Đây là những gì tôi muốn nói:

iPhone 5s Portrait
enter image description here

iPhone 5s Portrait khi tôi chọn vị trí

enter image description here

iPhone 5s Cảnh với lựa chọn lo cation

enter image description here

iPhone 5s khi tôi xoay từ Landscape để Portrait

enter image description here

iPhone 6 Plus Portrait

enter image description here

iPhone 6 Plus Portrait khi tôi chọn vị trí

enter image description here

iPhone 6 Plus Cảnh với vị trí được lựa chọn

enter image description here

iPhone 6 Plus khi tôi xoay từ Landscape để Portraitthis is a problem vì phương pháp của tôi splitViewController:collapseSecondaryViewController:ontoPrimaryViewController: không được gọi. UINavigationController tại thời điểm đó không hoạt động. Khi tôi chọn vị trí không có gì xảy ra.

enter image description here

class PBOSplitViewController: UISplitViewController, UISplitViewControllerDelegate { 
    override func viewDidLoad() { 
     super.viewDidLoad() 

     preferredDisplayMode = UISplitViewControllerDisplayMode.AllVisible 
     delegate = self 
    } 

    func splitViewController(splitViewController: UISplitViewController, collapseSecondaryViewController secondaryViewController: UIViewController!, ontoPrimaryViewController primaryViewController: UIViewController!) -> Bool { 
     return false 
    } 
} 

tôi thiết lập SplitViewController tôi trong Storyboard.

+0

tôi đã cố gắng để buộc splitViewController để gọi phương pháp này, nhưng nó không giúp –

Trả lời

4

iPhone 6+ có màn hình lớn hơn và một số cách được xử lý như iPad.Bộ điều khiển chia tách trên iPhone 6+ sẽ cố gắng hiển thị cả bảng chính và chi tiết tương tự như trên iPad, trừ khi ứng dụng nằm trong "Chế độ hiển thị thu phóng".

NSHipster có một bài báo giải thích này chi tiết hơn: http://nshipster.com/uisplitviewcontroller/

+0

tôi vẫn không biết làm thế nào để giải quyết vấn đề. Có thể giữ được hành vi tương tự trên iPhone 6 Plus không? –

+0

@ BartłomiejSemańczyk cố gắng buộc bố cục bạn muốn với UISplitViewControllers 'preferredDisplayMode' https://developer.apple.com/library/ios/documentation/UIKit/Reference/UISplitViewController_class/#//apple_ref/occ/instp/UISplitViewController/preferredDisplayMode –

+0

I đã làm điều này, nhưng nó vẫn không hoạt động đúng. Tôi nghĩ rằng đây là vấn đề với "Chế độ hiển thị thu phóng" như bạn đã nói, nhưng không có tùy chọn như vậy trong Trình mô phỏng. –

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