0

ビューコントローラーがあり、xib 経由で接続されています。そのxibには別のビューがあり、この同じビューを2つの異なるIBoutletsに接続し、このビューをメインビューに追加しました。しかし、アウトレットでは、2 番目に追加したビューしか表示されません。最初のものは見ることができません。なんで?

4

2 に答える 2

3

2つのコンセントを同じビューオブジェクトに接続することは可能ですが、そうすることをお勧めすることはめったにありません。あなたの場合、これは1つのUIView(サブクラス化された)オブジェクトのみです。両方のIBOutletの「ポインタ」は同じ(個別の)オブジェクトを参照します。

ここで、最初と2番目の両方をセットアップし、それらをレイアウトするなどすると、2番目の1つだけが表示されているという印象があります。それがあなたの言っていることです。

最初に左側のビューをレイアウトし、次に右側のビューをレイアウトしたとすると、右側のビューのみが表示されているように見えます。
ここで、レイアウトステートメントのセキュリティ(位置、サイズ、フレーム、色など)を変更し、右側のビュー、次に左側のビューをレイアウトすると、左側のビューのみが表示されます。これは、同じオブジェクトを2つのIBOutletにリンクできたためです。2つ目のレイアウトを作成することで、最初に設定したレイアウトデータを上書きするだけです。

私があなたのケースの行間で読んだことから、IBで追加のUIView(または任意のサブクラス)を作成(おそらく複製)し、それに応じてそれぞれ1つのIBOutletにリンクすることをお勧めします。

于 2012-11-19T14:47:50.647 に答える
0

はい、2 つの IBOutlet を 1 つのオブジェクトに接続できますが、役に立たないと思います。

X と Y の 2 つの名前を持つ同じ人に電話をかけ、「ねえ!」と尋ねているようなものです。あなたはYです、XIは彼を見ることができません:)。

私が提案できるのは、2 つのサブビューを同時に表示する場合は、それぞれが単一の IBOutlet に接続されている 2 つの UIView を追加するか、単一の IBOutlet に接続された単一の UIView のみを使用し、ex のトグル ロジックを作成してみてください。

if(isConditionForViewOne){
//Change UI accordingly
  view.backgroundColor  =  [UIColor orangeColor];
}
else if(isConditionForViewTwo){
//Change UI accordingly
view.backgroundColor  =  [UIColor yellowColor];
}
于 2012-11-19T15:18:29.323 に答える