MonoTouch UIViewController initWithNibName

时间:2011-12-28 17:43:48

标签: objective-c uiviewcontroller mono xamarin.ios

我正在尝试加载包含在引用库中的视图控制器以及单独的资产包。为了做到这一点,我相信我需要使用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上显示将接受nib名称和包的构造函数。但是,这似乎不包含在生成的DLL中。

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

有没有人有过做这样的事情的经验,或者对如何完成它有任何建议?

1 个答案:

答案 0 :(得分:1)

如果对选择器有疑问,找到MonoTouch匹配的最佳方法之一就是使用Miguel的Rosetta Stone。这将告诉您特定选择器绑定的方法(或构造函数)。

如果你想继承现有的类型(例如使用btouch),你应该编写一些额外的代码(在一个单独的.cs文件中),在生成的.dll中编译(有点像额外的enums您希望添加到绑定的API)。这是可能的,因为生成器将生成(源方式)部分类。