0

私はCocoaアプリを書いています。1つのダイアログには3つのタブがあり、一部のタブはより多くの読み込み時間を必要とするため、それらを遅延して読み込みたいと思います。各タブはNSTabViewItemクラスであるため、タブから派生してそのビュープロパティをオーバーライドしようとしています。ビューゲッターメソッドでは、ViewControllerを使用してビューをロードして戻ります。デバッグで、NSTabViewItem -viewメソッドが正しく呼び出されることがわかりましたが、その後、NSTabViewはInitial FirstResponderを設定しようとし、次のメッセージでクラッシュしました。

***キャッチされなかった例外'NSInvalidArgumentException'が原因でアプリを終了します。理由:'-[NSTabViewItem setInitialFirstResponder:]では、最初のレスポンダーはタブビューアイテムのビューから降りる必要があります。(アイテム:無効なレスポンダー:) '

-initialFirstResponderメソッドをオーバーライドして、ロードしたビューのサブビューを返そうとしましたが、それでも同じ場所でクラッシュします。

誰かがそれを正しく動作させる方法を知っていますか?また、NSTabViewItemを導出することによってこれを行う正しい方法ですか?

ありがとう!-ジョニー

4

1 に答える 1

0

OK、これで例外を理解しました。にはNSTabViewItemビューがあるので、そのビューを使用して、次のように新しいビューをサブビューとして追加する必要があります。

-(NSView*)view {
   NSView* view = [super view];
   NSVIew* myView = //load view from nib
   [view addSubView:myView];
   return view;
}
于 2010-01-27T07:51:59.920 に答える