2012-04-05 20 views
21

Tôi có một dự án XCode iPad sử dụng bộ điều khiển điều hướng. Tôi cố gắng để có được một nút để đẩy một UISplitViewController để điều hướng chồng, nhưng đã nhận lỗi này:iOS: UISplitViewController không thể được đẩy đến UINavigationController

Split View Controllers cannot be pushed to a Navigation Controller

Hóa ra UISplitViewController không chơi độc đáo với UINavigationController. Tuy nhiên, tôi vẫn cần hiển thị bộ điều khiển chế độ xem chia tách khi nút này được nhấp. Làm thế nào để tôi làm điều này? Và, cũng quan trọng, làm cách nào để tạo nút quay lại để người dùng có thể được trả về bộ điều khiển điều hướng?

Trả lời

28

Để hiển thị một SplitViewController bạn sẽ cần phải sử dụng setRootViewController. Điều này là do một SplitViewController cần phải là bộ điều khiển xem gốc.

Từ Tài liệu của Apple:

A split view controller must always be the root of any interface you create. In other words, you must always install the view from a UISplitViewController object as the root view of your application's window. The panes of your split-view interface may then contain navigation controllers, tab bar controllers, or any other type of view controller you need to implement your interface.

Để lấy lại bạn sẽ cần phải sử dụng setRootViewController để quay trở lại trang trước đó. Tôi đã gặp phải vấn đề này khi tôi chuyển đổi ứng dụng iPhone thành phổ dụng và kết thúc bằng cách sử dụng bộ điều khiển điều hướng cho iPhone và setRootViewController cho phiên bản iPad. Đó là một chút của một bummer bởi vì bạn không thể animate nó độc đáo without a bit of fudging.

+0

Tôi sẽ sử dụng setRootViewController như thế nào? Google cho tôi biết đó là một phương thức của UIWindow, nhưng tôi không thể tìm ra nơi để tìm một cá thể UIWindow. –

+2

Bạn cần phải lấy nó như là một tài sản từ đại biểu ứng dụng của bạn, như thế này: MyAppDelegate * appDelegate = (MyAppDelegate *) [[UIApplication sharedApplication] delegate]; và sau đó [appDelegate.window setRootViewController: shareSelectViewController]; – glenstorey

+0

cảm ơn bạn rất nhiều! –

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