2009-06-06 9 views

答えて

3

NSTabViewはCocoaで最もカスタマイズ可能なクラスではありませんが、サブクラス化して独自の描画を行うことは可能です。あなたは、タブ・ビュー項目のコレクションを維持する以外に、スーパークラスから多くの機能を使用することはありません。そして、NSViewメソッドとNSResponderメソッドを実装して、描画とイベント処理が正しく機能するようにします。

無料またはオープンソースのタブバーコントロールのいずれかを見るのが一番良いかもしれません。以前はPSMTabBarControlを使っていました。それは自分のタブビューサブクラスを実装するよりはるかに簡単でした。交換する)。

3

私が最近取り組んできたのは、私が取り組んでいたことです。

私はタブのないタブビューを使用して、別のビューでタブを直接描画しました。私は自分のタブをウィンドウの下部にあるステータスバーの一部にしたいと思っていました。

あなたは明らかにマウスクリックを非常に簡単にサポートする必要がありますが、キーボードサポートも確実に行う必要があります。ちょっと難しいです:タイマーを実行してからキーボードアクセスがなくてもタブを切り替える必要があります半秒(OS Xのやり方を見てください)。アクセシビリティはあなたが考えるべきもう一つのことですが、それはうまくいくかもしれません。私はまだコードでチェックしていません。

4

を掲載、タブレスにNSTabViewのスタイルを設定して、サブクラスというNSSegmentedControlとそれを制御することが可能ですスタイルと動作をオーバーライドするNSSegmentedCell。これを行う方法については、Xcode 4のスタイルタブをエミュレートするこのプロジェクトをチェックしてください:https://github.com/aaroncrespo/WILLTabView/

0

別のNSSegmentedCellを使用して、NSTabViewのタブ選択を制御することは非常に簡単です。必要なのは、ファイルの所有者またはnibファイルに表示される他のコントローラクラスのいずれかにバインドできるインスタンス変数だけです。次に、IBのバインディングインスペクタで、同じselectedTabIndexプロパティにNSTabViewNSSegmentedCellの両方の選択されたインデックスをバインド

@property NSInteger selectedTabIndex; 

:ちょうどクラスのインタフェースdeclaratonでこのような何かを置きます。

これだけです。選択したデフォルトのタブインデックスを0以外の値にしない限り、プロパティを初期化する必要はありません。タブを維持するか、NSTabViewをタブレスにすることもできますが、どちらの方法でも動作します。どのコントロールが選択を変更しても、コントロールは同期しています。

関連する問題