2011-12-28 11 views
1

参照されたライブラリ内に含まれるビューコントローラと別のアセットバンドルをロードしようとしています。これを行うには、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ドキュメントはこのメソッドでは完全ではありませんが、nib名とバンドルを受け入れるUIViewControllerのコンストラクタを表示します。ただし、これは生成されたDLLに含まれて表示されません。

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

は、誰もがこのような何かをやっての経験を持っているか、それが達成できるかについてどのような提案を持っていますか?

答えて

1

セレクタについて疑問があるときは、MonoTouchのマッチを見つける最良の方法の1つは、MiguelのRosetta Stoneを使用することです。これは、特定のセレクターがバインドされたメソッド(またはコンストラクター)にも伝えます。

フォームを継承させたい場合は、既存のタイプ(例えばbtouchを使用して)あなたが好き追加enumsなどの生成の.dll(ビットの内部でコンパイルされるように、あなたは(別の.csファイルに)いくつかの追加のコードを記述する必要がありますバインドされたAPIに追加する)。これは、ジェネレータが部分クラスを(ソースに基づいて)生成するために可能です。

+0

リンクありがとうございました。私はこれまでに遭遇していませんでした。しかし、これは私をあまり助けてくれないようです。私はコンストラクタが定義されているのと同じですが、APIのドキュメントにありますが、私はまだ生成されたDLLの中でこれを見ていません。私はクラスのバインディングを作成しましたが、メッセージ 'initWithNibName'はUIViewControllerに直接あるので、自分のバインディングを定義しませんでした。これは間違いですか? 基本的に私のapi.csクラスはほとんど空です。なぜなら、今度はUIViewControllerを拡張するだけです。コントローラ用のインタフェースを定義しましたが、追加のインスタンスメソッドはありません。 makeは正常に動作します。 –

+0

私は助言をとり、特に以下のようなバインディングでコンストラクタを追加しました:[Export( "initWithNibName:bundle:")] IntPtrコンストラクタ(string nibName、NSBundle bundle);私はそれを使用しようとすると:NIBをバンドルでロードすることができませんでした: 'NSBundle <..../TestHarness.app/Test.embeddedframework>(まだ読み込まれていません)'という名前で 'TestViewController.nib'過去のこのエラーで解決策がない - それ以上の提案はありませんか?再度、感謝します –

関連する問題