• 締切済み

iPhoneアプリ開発 UIViewの表示

iPhoneアプリ開発初心者です。 ご回答、宜しくお願い致します。 BOOLのフラグでUIViewの表示、非表示の切り替え処理をしたいと 思っているのですが、うまくいきません(泣 何故か、以下の処理Aではうまくいくのですが(処理Aは全く意味のないプログラムですが…)、処理Bでは反応しないのです。 ※self.loadingViewはaddSubviewをした際に、非表示の設定を行なっています。 【処理A】 if(true) { self.loadingView.hidden = NO; NSLog(@"表示"); } else { self.loadingView.hidden = YES; NSLog(@"非表示"); } 【処理B】 if(flg) { // ←ある処理でBOOL型のflgをYES、NOで切り替えてます。 self.loadingView.hidden = NO; NSLog(@"表示"); } else { self.loadingView.hidden = YES; NSLog(@"非表示"); } 処理Bのログを見ると、 「表示」がうつるので確実にtrue内には入っているとは思うのですが、 何故かhidden=NOになってくれません。。泣 これだけの情報で教えてくださいなんて、 情報足りなさすぎと怒られてしまうかもしれません。。 初心者すぎてどこまでのせるべきか分かってなくてすみません>< 助けて下さると、ありがたいです。 宜しくお願い致しますm_ _m

みんなの回答

noname#190876
noname#190876
回答No.1

f(flg) { // ←ある処理でBOOL型のflgをYES、NOで切り替えてます。 self.loadingView.hidden = NO; NSLog(@"表示"); } else { self.loadingView.hidden = YES; NSLog(@"非表示"); } [self.loadingView setNeedsDisplay]; とやってみて、viewが、redraw必要なことを明示的に示す必要があるでしょう 処理Aと処理Bの違いは、処理Aは、コンパイラの最適化で、else部分が、コードに落ちてないからでしょう。

TuneKondo
質問者

お礼

さっそくご回答してくださり、ありがとうございますm_ _m 試したところ、だめでした。。 setNeedsDisplayの注意点として背景を透明するとあったので、 addSubiewをする前に self.loadingView.backgroundColor = [UIColor clearColor]; もしてあるのですが、再描画されず(T T) 調べてがんばります。

関連するQ&A