Я пытаюсь загрузить контроллер представления, содержащийся в справочной библиотеке, а также отдельный пакет активов. Для этого я считаю, что мне нужно использовать метод initWithNibName. Я добавил следующие дополнительные mtouch аргументы:MonoTouch UIViewController initWithNibName
-v -v -v -gcc_flags "-L${TargetDir} -F${TargetDir} -F${ProjectDir} -F${TargetDir}/Test.embeddedframework -framework Test"
Это Objective-C сниппет делает именно то, что мне нужно сделать:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
NSBundle *myBundle = [NSBundle bundleWithPath:[NSString stringWithFormat:@"%@/Test.embeddedframework",[[NSBundle mainBundle] bundlePath]]];
NSString *nib = [myBundle pathForResource:@"TestViewController" ofType:@"nib"];
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
self.viewController = [[TestViewController alloc] initWithNibName:@"TestViewController" bundle:myBundle];
self.window.rootViewController = self.viewController;
[self.window makeKeyAndVisible];
return YES;
}
Изнутри MonoTouch, я был в состоянии загрузить скомпилировать привязок и загрузите пакет активов. Но я не знаю, как отправить сообщение «initWithNibName». Документы API не являются полными для этого метода, но показывают конструктор на UIViewController, который будет принимать имя и комплект нить. Однако это не входит в сгенерированную DLL.
Кто-нибудь есть опыт работы с делать что-то подобное или есть какие-либо предложения относительно того, как это может быть достигнуто?
Спасибо за ссылку, я раньше этого не встречал. Однако, похоже, это не очень помогает мне. Я вижу, что конструктор определен, как и в документах API, но я все еще не видел этого в сгенерированной dll. Я создал привязки для класса, но поскольку сообщение «initWithNibName» напрямую связано с UIViewController, я не определил свою собственную привязку. Это ошибка? В основном мой класс api.cs почти пуст, так как я не делаю ничего, кроме расширения UIViewController в это время. Я определил интерфейс для контроллера, но никаких дополнительных методов экземпляра. Сделать работает отлично. –
Я принял совет и специально добавил конструктор в bind, например: [Export ("initWithNibName: bundle:")] IntPtr Constructor (string nibName, NSBundle bundle); но когда я пытаюсь использовать его, я получаю: Не удалось загрузить NIB в пакете: «NSBundle <..../TestHarness.app/Test.embeddedframework> (еще не загружен)» с именем «TestViewController.nib». Я был при этой ошибке в прошлом и не имеют разрешения - какие-либо дальнейшие предложения? еще раз спасибо –