MonoTouch UIViewController initWithNibName - PullRequest
1 голос
/ 28 декабря 2011

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

-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.

http://iosapi.xamarin.com/?link=C%3aMonoTouch.UIKit.UIViewController(System.String%2cMonoTouch.Foundation.NSBundle)

Есть ли у кого-нибудь опыт с чем-то подобным или есть какие-либо предложения относительно того, как это можно сделать?

1 Ответ

1 голос
/ 29 декабря 2011

Если вы сомневаетесь в выборе, одним из лучших способов найти совпадение MonoTouch является использование Rosetta Stone от Miguel. Это скажет вам, к какому методу (или конструктору) был привязан определенный селектор.

Если вы хотите унаследовать существующий тип (например, с помощью btouch), вам нужно написать дополнительный код (в отдельном файле .cs) для компиляции внутри сгенерированного .dll (немного похожего на дополнительный * 1006). * вы хотели бы добавить в связанный API). Это возможно, поскольку генератор будет создавать (исходные) частичные классы.

...