2012-10-31 24 views
6

Tôi đã thực hiện một ứng dụng iPhone từ lâu và bây giờ tôi đang nghĩ đến việc làm cho nó trở thành một ứng dụng toàn cầu, nhưng tôi đã tự hỏi liệu tôi có thể sử dụng Bảng phân cảnh để tạo phiên bản iPad hay không, vì vậy đối với iPhone, nó sẽ tải một MainWindow.xib và iPad nó sẽ tải một tập tin MainStoryboard. Điều này có thể không?Bạn có thể tạo một ứng dụng toàn cầu bằng cả MainWindow.xib cho iPhone và Storyboard cho iPad không?

+1

Tôi nghĩ, trừ khi ứng dụng rất phức tạp, bạn sẽ tốt hơn là chỉ làm cho nó trở thành bảng phân cảnh. Bằng cách đó tất cả các quá trình chuyển đổi sẽ giống nhau và mã của bạn sẽ sạch hơn rất nhiều. – nycynik

+0

Đó là điều, ứng dụng khá phức tạp, và tôi không nghĩ rằng tôi sẽ làm điều đó một lần nữa cho iPad nếu Storyboards không có sẵn, nhưng trước khi tôi vội vã vào bất cứ điều gì tôi cần biết nếu tôi có thể làm việc đó đi. – user1790012

Trả lời

3

Có, nhưng bạn thực sự phải tạo hai bảng phân cảnh riêng biệt (1 cho iPhone và 1 cho iPad).

Trong bảng phân cảnh của iPhone, chỉ cần kéo mainwindow.xib của bạn vào giữa rootViewController và đảm bảo rằng màn hình đó ở chế độ toàn màn hình.

Sau đó, bạn có thể làm bất cứ điều gì bạn muốn với bảng phân cảnh iPad của bạn.

Đảm bảo rằng hai tệp bảng phân cảnh của bạn được liên kết chính xác trong tóm tắt dự án của bạn!

+0

Nghe hay, tôi sẽ cho nó đi và xem điều gì xảy ra, cảm ơn bạn rất nhiều. – user1790012

0

Nó sẽ được đơn giản để bạn có thể sử dụng một kịch bản trên iPad và ngòi trên iPhone nếu bạn không bộ giao diện chính (NSMainNibFile trong Info.plist) hoặc một Storyboard Main (NSMainStoryboardFile trong Info.plist).

Thay vào đó, hãy di chuyển ứng dụng của bạn ra khỏi MainWindow.xib và để UIApplicationMain khởi tạo nó bằng cách chuyển tên lớp làm đối số thứ tư cho UIApplicationMain trong main. Đặt ứng dụng ủy quyền cho Chủ sở hữu tệp là MainWindow.xib.

Trong ứng dụng của đại biểu application:didFinishLaunchingWithOptions:, bạn có thể kiểm tra thành ngữ giao diện.

Nếu thành ngữ giao diện là iPhone, hãy tải MainWindow bằng cách sử dụng -[NSBundle loadNibNamed:owner:options:].

Nếu thành ngữ giao diện là iPad, hãy tạo cửa sổ của bạn, tải MainStoryboard sử dụng +[UIStoryboard storyboardWithName:bundle:], khởi tạo bộ điều khiển chế độ xem ban đầu với -[UIStoryboard instantiateInitialViewController] và đặt bộ điều khiển chế độ xem đó làm bộ điều khiển chế độ xem gốc của cửa sổ.

3

Gazzini đúng và có câu trả lời đầu tiên trong khi tôi đang nghiên cứu để xác nhận rằng điều này đúng là & tương đối đơn giản trước khi tôi nhập câu trả lời của riêng mình. Vì vậy, +1 cho anh ta.

Bạn không cần hai bảng phân cảnh riêng biệt. Bạn chỉ cần một bảng phân cảnh cho một kiến ​​trúc và các tệp XIB của bạn cho kiến ​​trúc mà bạn đã hỗ trợ.

Đây là một ảnh chụp màn hình có thể giúp bạn thấy những gì tôi đã làm trong dự án thử nghiệm của riêng tôi:

Yes It Is Possible

Đơn giản chỉ cần chỉnh sửa plist của ứng dụng của bạn sử dụng một "ngòi" tập tin cho kiến ​​trúc cụ thể mà bạn đã có các tệp XIB và sau đó chỉ định các bảng phân cảnh cho kiến ​​trúc mới.

+0

Cảm ơn bạn rất nhiều cho câu trả lời của bạn quá, nhưng làm một số nghiên cứu tôi thấy rằng để gửi một ứng dụng cho App Store, trong info.plist của tôi, tôi chỉ có thể đặt NSMainNIBFile hoặc UIMainStoryboardFile. Tôi tìm thấy điều này trong Hướng dẫn tham khảo khóa danh sách thuộc tính thông tin, trong đó thông báo "NSMainNIBFile: Khóa này loại trừ lẫn nhau với khóa 'UIMainStoryboardFile' (trang 77). Bạn nên bao gồm một trong các khóa trong tệp Info.plist của mình nhưng không phải cả hai . " – user1790012

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