Свяжите пользовательский элемент управления, созданный как UIView в Интерфейсном Разработчике, с помощью monotouch - PullRequest
2 голосов
/ 07 мая 2011

Используя monotouch и monodevelop, я бы хотел создать пользовательский элемент управления. Я следовал за этими шагами:

  • добавить новый файл как «iPhone View» (называя его TestView)
  • редактировать TestView.xib в Интерфейсном Разработчике, es. изменение фона и размера
  • Отредактируйте MainWindow.xib в Интерфейсном Разработчике, добавив UIView и установив его идентификатор класса как «TestView».

На этом этапе я бы хотел запустить приложение и увидеть в UIView MainWindow содержимое экземпляра TestView.

Чтобы получить эту «привязку», я попытался выполнить несколько шагов (я знаю, что это можно сделать с помощью кода, создающего торговые точки и т. Д., Но я хотел бы понять, можно ли это сделать с помощью Интерфейсного конструктора).

В одном из опробованных методов я установил через Interface Builder значение «TestView» в качестве идентификатора класса в представлении TestView.xib: таким образом MonoTouch создал код в TestView.xib.designer.cs.

[MonoTouch.Foundation.Register("TestView7")]
public partial class TestView7 {
}

Затем в TestView.xib.cs я добавил:

public partial class TestView : UIView
{
    public TestView (IntPtr p) : base(p)
    {
    }       
 }

Когда я запускаю приложение, я не вижу в представлении MainWindow содержимое TestView, но если в конструкторе TestView я добавляю что-то вроде

BackgroundColor = UIColor.Yellow;

тогда я вижу TestView в MainWindow ... или, что еще лучше, я вижу только желтый прямоугольник, а не реальное содержимое!

Итак, проблема в том, что TestView привязан к UIView в MainWindow, но его содержимое происходит только из кода, а не из содержимого, определенного через Interface Builder в TestView.xib.

Есть ли способ загрузить контент из TestView.xib?

Ответы [ 2 ]

0 голосов
/ 20 декабря 2012

Ответ Эллисон А в вопросе SO monotouch - многоразовое пользовательское представление iOS * , объясняющее, как загрузить существующие составные представления, созданные в Interface Builder, в пользовательское представление.

0 голосов
/ 26 сентября 2011

Взгляните на http://ios.xamarin.com/Documentation/API_Design#Interface_Builder_Outlets_and_C.23

Я полагаю, что вам нужно сделать, это добавить конструктор, который обрабатывает файл пера (ниже по ссылке выше):

При использованииMonoTouch вашему приложению потребуется создать класс, производный от UIViewController, и реализовать его следующим образом:

public class MyViewController : UIViewController {
    public MyViewController (string nibName, NSBundle bundle) : base (nibName, bundle)
    {
    // You can have as many arguments as you want, but you need to call
    // the base constructor with the provided nibName and bundle.
    }
} 

Затем, чтобы загрузить ваш ViewController из файла NIB, вы делаете это:* Это загружает пользовательский интерфейс из NIB.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...