0

次のように、uiviewcontroller のヘッダー ファイルで uiview を宣言します。

@property (strong, nonatomic) UIView *loadLoading;

そしてviewdidloadでそれを開始します:

loadLoading = [[UIView alloc] initWithFrame:self.view.bounds];
loadLoading.backgroundColor = [UIColor blueColor];
[self.view addSubView:loadLoading];

これはうまくいきます。しかし、私のプログラムの別の時点で、このサブビューを削除したいと考えています。しかし、なぜか削除されません。

NSLog(@"%@",loadLoading.backgroundColor);
[loadLoading removeFromSuperview];

(ログが機能するため、その時点に達し、loadLoading にアクセスできることはわかっています。

4

3 に答える 3

0

あなたがNSLog(@"%@",loadLoading.backgroundColor);仕事をしているなら。

その後、このコード[self.loadLoading removeFromSuperview];は機能するはずですが、そうでない場合は奇妙なバグがあります。

ここに別のアプローチがあります。ビューをparentViewに追加するときに、ビューにタグを追加します。

loadLoading = [[UIView alloc] initWithFrame:self.view.bounds];
[loadLoading setTag:7];

そのタグを使用して、parentView から削除します。

[[self.view viewWithTag:7] removeFromSuperView];
于 2012-11-04T10:26:19.820 に答える
0

問題が見つかりました。

質問で十分な詳細を提供しませんでした。私は別のスレッドにロードする通知センターからこのメソッドを呼び出していました。だから私は最初performSelectorOnMainThreadにうまくいったことをしなければならなかった

于 2012-11-09T01:39:57.810 に答える
-1

試す:

[self.loadLoading removeFromSuperview];
于 2012-11-04T02:59:07.990 に答える