2011-10-08 23 views
5

EDIT: Vì tôi chưa cài đặt XCode 4, tôi muốn biết MD 2.8 có tương thích hoàn toàn với XCode 3.2.6 hay không. Cụ thể, tôi có thể kết nối các cửa hàng và hành động với quy trình mới được mô tả trong MT documentation không?Monodevelop 2.8, XCode 3.2.6, Trình tạo giao diện: Cửa hàng và hành động

Tôi vừa cài đặt MonoDevelop (MD) 2.8. Có vẻ như tôi không mong đợi.

Trong MD 2,6 khi tôi tạo một UIViewController mới, điều khiển được trình bày như sau:

  • Controller.xib < - bên trong cùng một cây
    • Controller.xib.cs
    • Controller.xib.designer.cs

Ngoài ra nếu tôi mở tệp xib, Controller.xib, chỉ có Trình tạo giao diện (IB) được mở. Nếu tôi thêm các cửa hàng vào xib, các cửa hàng có thể nhìn thấy trong Controller.xib.designer.cs.

Trong MD 2,8 khi tôi tạo một UIViewController mới, điều khiển được trình bày như sau:

  • Controller.xib < - không hơn bên trong cùng một cây
  • Controller.cs
    • Controller.designer.cs

Vì vậy, tôi có hai tệp thay vì một tệp.

Ngoài ra nếu tôi mở tệp xib, Controller.xib, IB và Xcode được mở. Nếu tôi thêm cửa hàng vào xib, các cửa hàng không thể nhìn thấy trong nhà thiết kế.

Mọi đề xuất?

+2

Tôi không thạo trong MonoDevelop, vv, nhưng bạn đã chú ý đến blog entry về MonoDevelop và MonoTouch bây giờ sử dụng Xcode 4? –

Trả lời

6

MonoDevelop 2.8 giới thiệu một mô hình thiết kế xib mới nhằm hỗ trợ Xcode 4.

Giao diện Builder tích hợp trong Xcode 4 không còn hỗ trợ việc xác định các lớp học, cửa hàng và các hoạt động trong các tập tin xib. Điều này measn nó không còn có thể cho MonoDevelop sử dụng mô hình mà nó tạo ra * .xib.designer.cs tập tin từ các tập tin xib. Thay vào đó, Interface Builder đọc các cửa hàng và hành động từ mã nguồn mục tiêu-C. Giải pháp của MonoDevelop cho điều này là để đồng bộ các lớp C# với các cuống Objective-C.

Khi bạn mở tệp xib từ MonoDevelop 2.8, MonoDevelop tạo dự án Xcode tạm thời với Cuống mục tiêu-C phản ánh tất cả các lớp C# được tiếp xúc với Objective-C, tức là các lớp kế thừa từ NSObject và được đăng ký rõ ràng thuộc tính [Register("SomeName")]. Sau đó nó sẽ mở tệp xib trong ngữ cảnh của dự án đó, do đó Trình tạo giao diện sẽ thấy tất cả các loại có sẵn và các cửa hàng và hành động trên chúng. Nếu các cửa hàng và hành động được thêm vào trong Xcode 4 bằng cách sử dụng hệ thống kéo điều khiển của nó, các hệ thống này sẽ tự động được nhập trở lại vào các tệp * .designer.cs trong MonoDevelop.

Điều này có nghĩa là các tệp thiết kế không còn được tạo từ một số tệp khác, thay vào đó chúng là vị trí thực tế nơi thông tin được lưu trữ. Bây giờ các tệp thiết kế được liên kết với một lớp thay vì một xib.

mô hình mới này có một số mặt tích cực trên hỗ trợ Xcode 4:

  • Nó bây giờ có thể cho nhiều file xib tham khảo cùng lớp.
  • Dự án chứa tất cả các tài nguyên nội dung và các tệp xib khác, do đó chúng có thể dễ dàng được tham chiếu từ Bộ dựng giao diện
  • Trình tạo giao diện sẽ thấy các cửa hàng được viết trên các phần của lớp người dùng C# và các lớp cơ sở. .

Ngoài ra, giờ đây việc viết cửa hàng theo cách thủ công trở nên dễ dàng hơn nhiều. Đơn giản chỉ cần áp dụng các thuộc tính Outlet để một tài sản, ví dụ

[Outlet ("someView")] 
UIView SomeView {get; set; } 

Thật không may là mô hình mới có nghĩa là MonoDevelop không còn tích hợp với việc tạo ra các cửa hàng và hành động trong Interface Builder 3.2.x. Khuyến nghị của tôi là bạn nâng cấp lên Xcode 4. Tải và chỉnh sửa các dự án trước MD 2.8 nên hoạt động tốt.

Xin xem http://docs.xamarin.com/ios/tutorials/transitioning_from_xcode_3_to_xcode_4

+0

Cảm ơn bạn rất nhiều vì đã trả lời. Rất hữu ích. –

+0

Điều đó có nghĩa là XIB được tạo bằng MD 2.6 và Xcode 3 trong dự án được nâng cấp lên MD 2.8 và Xcode 4, vẫn ở định dạng cũ và hoạt động cho đến khi tôi cần thay đổi gì đó? – Krumelur

+0

Không cần chuyển đổi. –

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