Monotouch: загрузить XIB асинхронно - PullRequest
1 голос
/ 03 марта 2011

Я хотел бы знать, как правильно вызывать внешний XIB.

Метод MonoTouch.Foundation.NSBundle.MainBundle.LoadNib загружает XIB синхронно, но таким образом я не могу переопределить метод ViewDidLoad.

В частности, моя цель - создать пользовательский UIViewController и загрузить XIB, созданный в IB (этот элемент является элементом, прикрепленным к суперпредставлению). Тогда я бы приложил действие нажатия на пользовательский UIView. Без переопределения метода ViewDidLoad я не смогу это сделать.

Как найти хороший учебник, чтобы понять все различные конструкторы, которые я могу использовать в UIViewController?

Например, не могли бы вы объяснить эти ctors?

public MyCustomView (IntPtr handle) : base(handle)
{
    Initialize ();
}

[Export("initWithCoder:")]
public MyCustomView (NSCoder coder) : base(coder)
{
    Initialize ();
}

public MyCustomView () : base("MyCustomView", null)
{
    //---- this next line forces the loading of the xib file to be synchronous
    MonoTouch.Foundation.NSBundle.MainBundle.LoadNib ("MyCustomView", this, null);
    Initialize ();
}

Большое спасибо. С наилучшими пожеланиями.

1 Ответ

0 голосов
/ 24 марта 2011

Концепция, которую вы пытаетесь использовать, кажется мне изменяющей поведение событий и действий по умолчанию в CocoaTouch.

Дело в том, что ViewDidLoad - это именно то место, где вы должны выполнить инициализацию, а не в самом конструкторе, оставить загрузку NIB на платформе и просто обработать ViewDidLoad, как и предполагалось.

Это действительно помогает читать документацию по разработке Apple, это мне очень помогло с самого начала: https://developer.apple.com/library/ios/#featuredarticles/ViewControllerPGforiPhoneOS/BasicViewControllers/BasicViewControllers.html

...