2012-01-29 14 views
1

私はまだココアを学ぶことがたくさんあるので、ここではっきりと分からないことがあります。私はそこに現在のサブビューを置き換えるnssplitviewに表示したいカスタムビューを持っています。NSSplitviewのサブビューをカスタムビューに置き換えます。

私はMessageView.xibファイルとNSViewをサブクラス化するMessageView .h/.mを持っています。 Xcode 4のGUIビルダーを使ってメインウィンドウ(nssplitviewを含む)のカスタムビューインスタンスを作成しました。私は、ウィンドウのコントローラにMessageViewのこのインスタンスへのコンセントを作成しました。ウィンドウのための私のコントローラで

私はsplitviewのためのサブビューを交換したい、それがこの

[splitView replaceSubview:[[splitView subviews] objectAtIndex:1] with:viewMessage]; 

viewMessageがMessageViewへの出口で実行されます。

このコードを実行すると、そのサブビューの表示が空白に変わります。私のカスタムビューに何か問題があるか、またはサイズの問題があるかどうかはわかりません。分割画面ビューにビューを合わせるために何かする必要があるのですか、または私のカスタムビューが正しく表示されないだけですか?私はXcode 4でカスタムサブビューを作成するためのチュートリアルを見つけるのに苦労しましたので、何か問題があるかどうかはわかりません。カスタムビューにはラベルとテキストフィールドがあります。

+0

これは分かりましたか? – livingtech

+1

これはこのように見えます:http://stackoverflow.com/q/1419038/18961 – livingtech

答えて

3

一般に、NSSplitViewのサブビューを自分で置き換える必要はありません。むしろ、独自のカスタムビューをディバイダの両側にあるデフォルトのサブビューの子ビューとして追加します。これはaddSubview:というコードで行うことができますが、XcodeでInterface Builderを使う方が簡単でしょう。その後、アイデンティティインスペクタで、カスタムクラスの下で、カスタムNSViewのサブクラスの名前にクラスを変更、splitviewに「カスタムビュー」をドラッグします。

enter image description here

私は(と思う私の頭の上からデフォルトのNSSplitViewサブビューを独自のクラスに置き換える必要がある場合は、この同じメソッドを使用してInterface Builderで実行できますが、デフォルトのサブビュー自体を選択し、インスペクタでそのクラスを変更します。これはすべてのAppKitクラスで機能するわけではありませんが、NSSplitViewでは機能します。

+0

これは本当にここでの質問に答えません。サブクラスを使用する方法を提案していますが、実行時に既存のビューを置換または置換する方法が問題です。私はこれと同じ必要があります。 (以下のWakjobと同じように)私はおそらく、私はこの仕事を得るときにここに再び投稿します。 – livingtech

+1

OPは、自分のビューを子ビューとして追加するのではなく、実行時にスプリットビューのデフォルトのサブビューを自身のものに置き換えることをOPがなぜ望んでいるのかは明らかではありませんでした。私はそれを行う理由はないと主張していませんが、自己記述初心者が助言を求めるとき、私はより複雑な何かをする明確な理由がない限り、標準的なアプローチに向かわせる傾向があります。リンクした質問とは異なり、彼は実行時に複数のビューを切り替えるということを明確に述べていません。 –

関連する問題