Когда MonoDevelop генерирует синтаксис Connect - PullRequest
1 голос
/ 31 марта 2012

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

В примере в файле '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» не генерируется, и я понятия не имею, как правильно определить это в Интерфейсном Разработчике.

Что-то еще, что я заметил. В моем коде должен быть другой активный генератор. Вот что было сгенерировано для примера 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.
//

1 Ответ

1 голос
/ 31 марта 2012

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

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

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

...