2011-10-08 14 views
5

EDYCJA: Ponieważ nie mam jeszcze zainstalowanego XCode 4, chciałbym wiedzieć, czy MD 2.8 jest w pełni kompatybilny z XCode 3.2.6 czy nie. W szczególności Czy mogę połączyć punkty sprzedaży i działania z nową procedurą opisaną w MT documentation?Monodevelop 2.8, XCode 3.2.6, Konstruktor interfejsów: Wyloty i akcje

Właśnie zainstalowałem MonoDevelop (MD) 2.8. Wygląda na to, że nie działa, jak się spodziewałem.

W MD 2,6 gdy tworzę nową UIViewController, że sterownik jest przedstawiony jak następuje:

  • Controller.xib < - wewnątrz tego samego drzewa
    • Controller.xib.cs
    • Controller.xib.designer.cs

Dodatkowo, jeśli otworzę plik xib, Controller.xib, otwarty zostanie tylko Interface Builder (IB). Jeśli dodaję wyloty do Xib, ujścia są widoczne w pliku Controller.xib.designer.cs.

W MD 2,8 gdy tworzę nową UIViewController, że sterownik jest przedstawiony jak następuje:

  • Controller.xib < - nie więcej wewnątrz samego drzewa
  • Controller.cs
    • Controller.designer.cs

Mam więc dwa pliki zamiast jednego.

Dodatkowo, jeśli otworzę plik xib, Controller.xib, IB i Xcode zostaną otwarte. Jeśli dodaję wyloty do Xib, ujścia nie będą widoczne w projektancie.

Wszelkie sugestie?

+2

Nie jestem dobrze zorientowany w MonoDevelop itp jeszcze, ale można zauważyć wpis w blogu o MonoDevelop i MonoTouch teraz używa Xcode 4? –

Odpowiedz

6

MonoDevelop 2.8 wprowadzono nowy model projektant xib w celu wspierania Xcode 4.

Interface Builder zintegrowany z Xcode 4 nie obsługuje już definiowania klas, placówek i działań w plikach XIb. To nie jest już możliwe, aby MonoDevelop używał modelu, w którym wygenerował pliki * .xib.designer.cs z plików xib. Zamiast tego, Interface Builder odczytuje ujścia i akcje z kodu źródłowego Objective-C. Rozwiązaniem MonoDevelop jest synchronizacja klas C# z kodami Objective-C.

Po otwarciu pliku Xib z MonoDevelop 2.8, MonoDevelop tworzy tymczasowy projekt Xcode z kodami Objective-C dublującymi wszystkie klasy C#, które są wystawione na Objective-C, tj. Klasy dziedziczące po NSObject i jawnie zarejestrowane z atrybut [Register("SomeName")]. Następnie otwiera plik xib w kontekście tego projektu, aby twórca interfejsu zobaczył wszystkie dostępne typy oraz punkty sprzedaży i działania na nich. Jeśli wyloty i akcje zostaną dodane w Xcode 4 za pomocą systemu sterowania i przeciągania, są one automatycznie importowane z powrotem do plików * .designer.cs w MonoDevelop.

Oznacza to, że pliki projektanta nie są już generowane z innych plików, ale są rzeczywistą lokalizacją, w której przechowywane są informacje. Teraz pliki projektanta są powiązane z klasą zamiast z xib.

Ten nowy model posiada kilka upsides na szczycie wspieranie Xcode 4:

  • Jest to teraz możliwe dla wielu plików XIB odnoszą się do tej samej klasy.
  • Projekt zawiera wszystkie zasoby treści i inne pliki Xib, dzięki czemu można je łatwo odwoływać z Konstruktora interfejsu
  • Konstruktor interfejsów "zobaczy" ujścia napisane na elementach klasy użytkownika C# i klasach bazowych, a nie tylko na częściach klasy projektanta .

Ponadto, znacznie łatwiej jest ręcznie pisać punkty sprzedaży. Wystarczy zastosować atrybut Outlet do nieruchomości, na przykład

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

Niestety nowy model oznacza, że ​​MonoDevelop nie integruje się z tworzeniem placówek i działań w interfejsie Builder 3.2.x. Moją rekomendacją jest uaktualnienie do Xcode 4. Ładowanie i edycja projektów sprzed MD 2.8 powinno działać dobrze.

proszę zobaczyć http://docs.xamarin.com/ios/tutorials/transitioning_from_xcode_3_to_xcode_4

+0

Dziękuję bardzo za odpowiedź. Bardzo pomocne. –

+0

Czy to oznacza, że ​​XIB wygenerowane w MD 2.6 i Xcode 3 w projekcie, który zostanie uaktualniony do wersji MD 2.8 i Xcode 4, pozostaną w starym formacie i będą działać, dopóki nie będę musiał coś zmienić? – Krumelur

+0

Konwersja nie jest konieczna. –

Powiązane problemy