0

現在、次の行を使用して、メソッドのビューをサブビューとしてメソッド内の別のビューに追加しています。

[self.landscape addSubview:[self makeSpin]];

これはうまく機能し、すべてがダンディですが、今はそれを隠す方法を知る必要があります。

明らかに[self.landscape setHidden:[self makeSpin]];、トリックを行いません。
誰かがこれを行う方法の簡単なサンプルを私に提供できますか?または、正しい方向のポイントでも役立ちます。

前もって感謝します。

4

3 に答える 3

1

常に同じオブジェクトが返される場合[self makeSpin](新しいビューを作成して返すのではなく、自動解放されたビューではない)、次のようにビューを削除できます。

[[self makeSpin] removeFromSuperView];

それ以外の場合は、サブビューにタグを追加する必要があります(ビューはから戻る

[self makeSpin]).

好き:

UIView *tempView = [[self makeSpin] retain];
tempView.tag = 7;
[self.landscape addSubview:tempView];
[tempView release];

ビューを削除するには、次のように記述する必要があります。

[[self.landscape viewWithTag:7] removeFromSuperview];

また、このループを使用することができます、

for (UIView *subview in [self.landscape subviews])
{
    if (subview.tag == 7)
    {
        [subview removeFromSuperview];
    }
}
于 2012-08-15T09:13:40.010 に答える
1

makeSpinが返すビューはインスタンス変数であると想定しています(そうでない場合は、何らかの方法でインスタンス変数にするか、タグを使用する必要があります)。もしそうなら、これを試してください:

[self makeSpin].hidden = YES;
于 2012-08-14T21:37:26.283 に答える
0

インスタンス変数に割り当てられていない自動解放されたビューを返す場合、のサブビュー配列makeSpinでそれを見つけようとする以外に、そのビューにアクセスすることはできません。self.landscapeここで行う最も簡単な方法は、クラスにプロパティを作成し、それを使用して新しいサブビューの値を保持し、後でそれを操作できるようにすることです。viewDidUnloadメソッドでnilに設定することを忘れないでください。

于 2012-08-14T21:42:25.747 に答える