ビューコントローラーがあり、xib 経由で接続されています。そのxibには別のビューがあり、この同じビューを2つの異なるIBoutletsに接続し、このビューをメインビューに追加しました。しかし、アウトレットでは、2 番目に追加したビューしか表示されません。最初のものは見ることができません。なんで?
2 に答える
2つのコンセントを同じビューオブジェクトに接続することは可能ですが、そうすることをお勧めすることはめったにありません。あなたの場合、これは1つのUIView(サブクラス化された)オブジェクトのみです。両方のIBOutletの「ポインタ」は同じ(個別の)オブジェクトを参照します。
ここで、最初と2番目の両方をセットアップし、それらをレイアウトするなどすると、2番目の1つだけが表示されているという印象があります。それがあなたの言っていることです。
最初に左側のビューをレイアウトし、次に右側のビューをレイアウトしたとすると、右側のビューのみが表示されているように見えます。
ここで、レイアウトステートメントのセキュリティ(位置、サイズ、フレーム、色など)を変更し、右側のビュー、次に左側のビューをレイアウトすると、左側のビューのみが表示されます。これは、同じオブジェクトを2つのIBOutletにリンクできたためです。2つ目のレイアウトを作成することで、最初に設定したレイアウトデータを上書きするだけです。
私があなたのケースの行間で読んだことから、IBで追加のUIView(または任意のサブクラス)を作成(おそらく複製)し、それに応じてそれぞれ1つのIBOutletにリンクすることをお勧めします。
はい、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];
}