2011-10-08 5 views
5

EDIT: Поскольку я еще не установил XCode 4, я хотел бы знать, полностью ли MD 2.8 полностью совместим с XCode 3.2.6 или нет. В частности, могу ли я подключать выходные и действия с помощью новой процедуры, описанной в MT documentation?Monodevelop 2.8, XCode 3.2.6, Interface Builder: выходы и действия

Я только что установил MonoDevelop (MD) 2.8. Кажется, я не работаю, ожидая.

В MD 2,6, когда я создаю новый UIViewController, что контроллер представлен как следующий:

  • Controller.xib < - внутри того же дерева
    • Controller.xib.cs
    • Controller.xib.designer.cs

Кроме того, если я открываю xib-файл, Controller.xib, открывается только Interface Builder (IB). Если я добавляю выходы к xib, выходы видны в Controller.xib.designer.cs.

В MD 2,8, когда я создаю новый UIViewController, что контроллер представлен как следующее:

  • Controller.xib < - не больше внутри того же самого дерева
  • Controller.cs
    • Контролер.designer.cs

Итак, у меня есть два файла вместо одного.

Кроме того, если я открываю xib-файл, открываются Controller.xib, IB и Xcode. Если я добавляю выходы к xib, выходы не отображаются в дизайнере.

Любые предложения?

+2

Я не очень хорошо разбираюсь в MonoDevelop и т.д. пока нет, но вы заметили запись в блоге о MonoDevelop и MonoTouch теперь использует Xcode 4? –

ответ

6

MonoDevelop 2.8 не представил новую модель XIB дизайнера для того, чтобы поддержать Xcode 4.

Интерфейс Builder интегрирован в Xcode 4 больше не поддерживает определение классов, точек и действия в XIb файлах. В этом случае MonoDevelop больше не может использовать модель, в которой он генерировал файлы * .xib.designer.cs из xib-файлов. Вместо этого Interface Builder считывает выходные данные и действия из исходного кода Objective-C. Решение MonoDevelop заключается в том, чтобы синхронизировать классы C# с объектами Objective-C.

Когда вы открываете xib-файл из MonoDevelop 2.8, MonoDevelop создает временный проект Xcode с объектами Objective-C, дублируя все классы C#, которые подвергаются Objective-C, то есть классы, которые наследуют NSObject и явно регистрируются с помощью a [Register("SomeName")] атрибут. Затем он открывает файл xib в контексте этого проекта, так что Interface Builder увидит все доступные типы и выходы и действия на них. Если выходы и действия добавляются в Xcode 4 с помощью системы управления им перетаскиванием, они автоматически импортируются обратно в файлы * .designer.cs в MonoDevelop.

Это означает, что файлы дизайнера больше не генерируются из какого-либо другого файла, а они являются фактическим местом, где хранится информация. Теперь файлы конструктора связаны с классом вместо xib.

Эта новая модель имеет несколько расквитаться на вершине поддержки Xcode 4:

  • Это теперь возможно для нескольких XIb файлов относятся к одному классу.
  • Проект содержит все ресурсы контента и другие файлы xib, поэтому их можно легко ссылаться из Interface Builder
  • Интерфейс Builder будет «видеть» выходы, написанные на элементах и ​​базовых классах классов C#, а не только части класса дизайнера ,

Кроме того, теперь стало проще записывать розетки вручную. Просто применить атрибут Outlet к свойству, например

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

К сожалению, новая модель означает, что MonoDevelop больше не интегрируется с созданием точек и действий в Interface Builder 3.2.x. Моя рекомендация заключается в том, что вы обновляетесь до Xcode 4. Загрузка и редактирование проектов до MD 2.8 должны работать нормально.

Пожалуйста, см http://docs.xamarin.com/ios/tutorials/transitioning_from_xcode_3_to_xcode_4

+0

Большое спасибо за ваш ответ. Очень полезно. –

+0

Означает ли это, что XIB, сгенерированные с MD 2.6 и Xcode 3 в проекте, который обновляется до MD 2.8 и Xcode 4, остаются в старом формате и работают, пока мне не нужно что-то менять? – Krumelur

+0

Преобразование не требуется. –