Когда MonoDevelop генерирует синтаксис Connect

Я занимаюсь этим уже больше дня, и я выдергиваю здесь свои волосы. Я пытаюсь внедрить пример RedLaser в свое собственное приложение, но MonoDevelop/MonoTouch просто не генерирует правильный код. Это должно быть что-то, что я (не) делаю в Interface Builder. Хорошо здесь идет.

В образце в 'RLSampleViewController.xib.designer.cs создается следующее:

namespace RedLaserSample {


    // Base type probably should be MonoTouch.UIKit.UIViewController or subclass
    [MonoTouch.Foundation.Register("RLSampleViewController")]
    public partial class RLSampleViewController {

        private OverlayController __mt_overlayController;
   ....

        [MonoTouch.Foundation.Connect("overlayController")]
        private OverlayController overlayController {
            get {
                this.__mt_overlayController = ((OverlayController)(this.GetNativeField("overlayController")));
                return this.__mt_overlayController;
            }
            set {
                this.__mt_overlayController = value;
                this.SetNativeField("overlayController", value);
            }
        }

В моем коде генерируется следующее:

namespace Winkel
{
    [Register ("ScanArtikelController")]
    partial class ScanArtikelController
    {
        [Outlet]
        Winkel.OverlayController overlayController { get; set; }

Таким образом, синтаксис Connect не генерируется, и я понятия не имею, как правильно определить это в Interface Builder.

Я еще кое-что заметил. В моем коде должен быть активен другой генератор. Вот что было сгенерировано для примера RedLaser:

// ------------------------------------------------------------------------------
//  <autogenerated>
//      This code was generated by a tool.
//      Mono Runtime Version: 4.0.30319.1
// 
//      Changes to this file may cause incorrect behavior and will be lost if 
//      the code is regenerated.
//  </autogenerated>
// ------------------------------------------------------------------------------

и этот комментарий был сгенерирован для моего кода:

// WARNING
//
// This file has been generated automatically by MonoDevelop to store outlets and
// actions made in the Xcode designer. If it is removed, they will be lost.
// Manual changes to this file may not be handled correctly.
//

person Paul Sinnema    schedule 31.03.2012    source источник


Ответы (1)


Мне кажется, что пример кода у вас устарел. Это то, что генерировали предыдущие версии MonoDevelop (‹=2.6), когда Interface Builder был автономным приложением.

Теперь, когда Interface Builder интегрирован в Xcode, ваш код — это то, что генерирует MonoDevelop (>= 2.8).

Что касается функциональности, оба фрагмента кода одинаковы, то есть они оба будут создавать свойство, которое будет отражать вашу подключенную розетку в дизайнере интерфейса с типом OverlayController.

person Dimitris Tavlikos    schedule 31.03.2012