setNeedsDisplayに問題があります。私は、Inteface Builderで作成された多くのサブUIViewを持つUIViewを持っています。 IBActionのボタンもあります。このIBActionでは、すべてのUIView(またはUILabel、UIWebViewなどのすべてのUIElements)を再描画または再ロードしたいと考えています。サブビューをリロード/リフレッシュ - setNeedsDisplay does not work
私はこれを行っていますが、私にとってはうまくいかず、理由はわかりません:
//redraw the UIViews
[self.view_card_0 setNeedsDisplay];
[self.view_card_1 setNeedsDisplay];
[self.view_card_stapel setNeedsDisplay];
//other UI Elements
[self.webView_0 setNeedsDisplay];
[self.webView_1 setNeedsDisplay];
[self.webView_stapel setNeedsDisplay];
[self.lblCardTitle_0 setNeedsDisplay];
[self.lblCardTitle_1 setNeedsDisplay];
[self.lblCardTitle_stapel setNeedsDisplay];
[self.img_card_0 setNeedsDisplay];
[self.img_card_1 setNeedsDisplay];
[self.img_card_stapel setNeedsDisplay];
すべてのUIElements/UIViewsとSubviewを再描画/再読み込み/更新するにはどうすればよいですか?
EDIT 1:
detailViewController = [[DetailViewController alloc]
initWithNibName:@"DetailViewController_iPad" bundle:[NSBundle mainBundle]];
がdetailviewcontrollerは何のViewControllerは、ちょうどここhierarchie、uiviewsていない:私はビューをロードする方法
- のUIView
- UIViewContainer
私は何を期待するどのよう--- UIView0
--- UIView1
--- UIViewStapel
:
* 私は私が変更したい、のUIViewをリセットしたくありません背景とそれらの内容。 *
私は詳細ビューに多くのサブビュー(uiviews)があります。上記の階層を参照してください。私は、UIViewsのコンテンツを表示しています、コンテンツはcoreDataから来ています。
view1には、coreDataの現在の行が含まれています。
view0には、coreDataの前の行が含まれています。
viewStapelには、coreDataの次の行が含まれます。私はcoreData行を反復処理したいIBActionで
、アクションがログに..
ようにcalled..andされている場合、現在の次の行を表示し、データを変更しましたが、UIViewsには表示されません。 。これの原因は、現在のデータを表示するために、このような再描画や再ロードなどが必要です。
EDIT 2:私は、新しい方法でコードを入れて、私の問題を解決した、このメソッドを呼び出している
を解決しました。
なぜあなたはこれをやっているを貼り付けているのですか?それは何を期待していますか? UI要素が(プロパティの変更に応答して)その表示を更新する必要がある場合、そのメソッド自体が既に呼び出されているため、他のUI要素で '-setNeedsDisplay'を呼び出すのは* anything *を行いません。 –
私はそのIBActionのコンテンツとカラー/イメージを変更しています。コンテンツはcoreDataから取得されます。私は、ibactionの変更を表示するために、uiviewsを再描画する必要があります。 – brush51
setNeedsDisplayはビューを再描画しますが、プロパティ(例:色)はリセットされません。これを行うには、nibファイルからそれらをリロードする必要があります(下記の答えを参照)。 –