Поделиться через


Создание объектов пользовательского интерфейса в Xamarin.iOS

Apple группирует связанные части функций в "платформы", которые приравниваются к пространствам имен Xamarin.iOS. UIKit — это пространство имен, содержащее все элементы управления пользовательским интерфейсом для iOS.

Всякий раз, когда код должен ссылаться на элемент управления пользовательским интерфейсом, например метку или кнопку, не забудьте включить следующую инструкцию using:

using UIKit;

Все элементы управления, рассмотренные в этой главе, находятся в пространстве имен UIKit, и каждое имя класса управления пользователем UI имеет префикс.

Элементы управления и макеты пользовательского интерфейса можно изменять тремя способами:

  • Конструктор Xamarin iOS— используйте встроенный конструктор макетов Xamarin для проектирования экранов. Дважды щелкните раскадровку или файлы XIB, чтобы изменить его с помощью встроенного конструктора.
  • Построитель интерфейсов Xcode— перетащите элементы управления на макеты экрана с помощью построителя интерфейсов. Откройте раскадровку или XIB-файл в Xcode, щелкнув правой кнопкой мыши файл на панели решения и выбрав "Открыть с помощью > построителя интерфейсов Xcode".
  • С помощью C# элементы управления также можно создавать программными средствами с помощью кода и добавлять их в иерархию представлений.

Новые раскадровки и XIB-файлы можно добавить, щелкнув правой кнопкой мыши проект iOS и выбрав добавить > новый файл....

Любой используемый метод, управление свойствами и событиями по-прежнему можно управлять с помощью C# в логике приложения.

Использование конструктора Xamarin iOS

Чтобы начать создание пользовательского интерфейса в конструкторе iOS, дважды щелкните файл раскадровки. Элементы управления можно перетащить на область конструктора из панели элементов , как показано ниже:

Если элемент управления выбран в области конструктора, панель свойств будет отображать атрибуты для этого элемента управления. Поле "Имя удостоверения > мини-приложения>", заполненное на снимке экрана ниже, используется в качестве имени выхода. Вот как можно ссылаться на элемент управления в C#:

Панель мини-приложений свойств

Дополнительные сведения об использовании конструктора iOS см . в руководстве по конструктору iOS.

Использование построителя интерфейсов Xcode

Если вы не знакомы с помощью Конструктора интерфейсов, обратитесь к документам Apple Interface Builder .

Чтобы открыть раскадровку в Xcode, щелкните правой кнопкой мыши, чтобы открыть контекстное меню для файла раскадровки и открыть с помощью построителя интерфейсов Xcode:

Элементы управления можно перетащить в область конструктора из библиотеки объектов, как показано ниже:

Библиотека объектов Xcode

При разработке пользовательского интерфейса с помощью построителя интерфейсов необходимо создать выход для каждого элемента управления, на который вы хотите ссылаться в C#. Это делается путем включения редактора помощника с помощью кнопки редактора центра на панели инструментов Xcode:

Кнопка

Щелкните объект пользовательского интерфейса; затем элемент управления Перетащите в H-файл. Чтобы управлять перетаскиванием, удерживайте клавишу УПРАВЛЕНИЯ, а затем удерживайте на объекте пользовательского интерфейса, для чего создается выход (или действие). Удерживайте клавишу CONTROL при перетаскивании в файл заголовка. Завершите перетаскивание под определением @interface . Синяя линия должна отображаться с подпись вставки или коллекции выходов, как показано на снимке экрана ниже.

При освобождении щелчка вам будет предложено указать имя выхода, которое будет использоваться для создания свойства C#, на которое можно ссылаться в коде:

Создание выходов

Дополнительные сведения о том, как построитель интерфейсов Xcode интегрируется с Visual Studio для Mac, см. в документе создания кода Xib.

Использование C#

Если вы решите программно создать объект пользовательского интерфейса с помощью C# (например, в представлении или контроллере представления), выполните следующие действия:

  • Объявите поле уровня класса для объекта пользовательского интерфейса. Создайте сам элемент управления один раз, ViewDidLoad например. Затем объект можно ссылаться на методы жизненного цикла контроллера представления (например. ViewWillAppear
  • CGRect Создайте кадр элемента управления (координаты X и Y на экране, а также ширину и высоту). Для этого необходимо убедиться, что у вас есть директива using CoreGraphics .
  • Вызовите конструктор, чтобы создать и назначить элемент управления.
  • Задайте любые свойства или обработчики событий.
  • Вызов для Add() добавления элемента управления в иерархию представлений.

Ниже приведен простой пример создания UILabel контроллера представления с помощью C#:

UILabel label1;
public override void ViewDidLoad () {
    base.ViewDidLoad ();
    var frame = new CGRect(10, 10, 300, 30);
    label1 = new UILabel(frame);
    label1.Text = "New Label";
    View.Add (label1);
}

Использование C# и раскадровки

При добавлении контроллеров представления в Область конструктора в проект создаются два соответствующих файла C#. В этом примере ControlsViewController.cs ControlsViewController.designer.cs и были созданы автоматически:

Частичный класс ViewController

Файл ControlsViewController.cs предназначен для кода. View Здесь используются такие методы жизненного цикла, как ViewDidLoad и ViewWillAppear их реализация, и где можно добавлять собственные свойства, поля и методы.

Создается ControlsViewController.designer.cs код, содержащий частичный класс. При создании элемента управления на поверхности конструктора в Visual Studio для Mac или создании выхода или действия в Xcode, соответствующем свойстве или частичном методе добавляется в файл конструктора (designer.cs). В приведенном ниже коде показан пример кода, созданного для двух кнопок и текстового представления, где один из кнопок также имеет TouchUpInside событие.

Эти элементы частичного класса позволяют коду ссылаться на элементы управления и реагировать на действия, объявленные на поверхности конструктора:

[Register ("ControlsViewController")]
    partial class ControlsViewController
    {
        [Outlet]
        [GeneratedCodeAttribute ("iOS Designer", "1.0")]
        UIKit.UIButton Button1 { get; set; }

        [Outlet]
        [GeneratedCodeAttribute ("iOS Designer", "1.0")]
        UIKit.UIButton Button2 { get; set; }

        [Outlet]
        [GeneratedCodeAttribute ("iOS Designer", "1.0")]
        UIKit.UITextField textfield1 { get; set; }

        [Action ("button2_TouchUpInside:")]
        [GeneratedCodeAttribute ("iOS Designer", "1.0")]
        partial void button2_TouchUpInside (UIButton sender);

        void ReleaseDesignerOutlets ()
        {
            if (Button1 != null) {
                Button1.Dispose ();
                Button1 = null;
            }
            if (Button2 != null) {
                Button2.Dispose ();
                Button2 = null;
            }
            if (textfield1 != null) {
                textfield1.Dispose ();
                textfield1 = null;
            }
        }
    }
}

designer.cs Файл не должен быть изменен вручную. Интегрированная среда разработки (Visual Studio для Mac или Visual Studio) отвечает за синхронизацию файла с раскадровки.

Когда объекты пользовательского интерфейса добавляются программным способом в объект View или ViewControllerсоздают экземпляры и управляют ссылками на объекты самостоятельно, поэтому файл конструктора не требуется.