私のView Controllerには、次の2つのこと-(void) showDescription: (id) description
を行うメソッドがあります。
- ラベルに説明を表示します
- ビューに setNeedsDisplay を与えるメソッドをビューで実行します。
ここに奇妙なことがあります:
コード内の別のメソッドから showDescription を呼び出すと、showdescription に移動し (NSLog があります)、説明を読み取ります (別の NSLog) が、ラベルを変更したりsetNeedsDisplay
(NSLog なしで) ビュー メソッドを実行したりしません。
しかし...ボタンから同じメソッドを呼び出すと、問題なく機能します。label.textを配置し、ビューを再描画します。
showDescription
ビュー メソッドに 1 つと1 つの 2 つのブレークポイントを配置すると、同じ動作に気付きました。最初のケースでは、view メソッドには行きませんが、2 番目 (UIAction) では行きます。
それはどれほど奇妙ですか?誰かが理由を知っていますか?迷ってるから……。
どうもありがとう
クレムコア
クラス:
- GraphViewController: UIViewController
- グラフビュー: UIView
** GraphViewController.m * ** * ***
-(void) showDescription: (id) description
{
NSString* text= [(NSString*) description copy];
self.lableDescription.text=text; //display description in label
[self.graphView redrawView];
}
-(void)displayGraph
{
NSLog(@"GraphViewController.displayGraph");
NSLog(@"self.programData %@",self.programData); //these work fine
NSLog(@"description lable %@",self.programDescriptionData);
[self showDescription:self.programDescriptionData];
[self.graphView redrawView];
}
- (IBAction)redraw {
NSLog(@"IBAction redraw");
NSLog(@"myData %@",self.graphView.myData);
[self showDescription:@"CCCC"];
[self.graphView redrawView];
}
graphView.m * **
-(void)redrawView //public method
{
NSLog(@"redrawView");
[self setNeedsDisplay];
}
Lion 10.7.4 で Xcode 4.3.3 を使用しています
何が起こるかは次のとおりです。
displayGraph を呼び出すと、programData と programDescriptionData は問題ありません (NSLog は正しく表示されます) が、ラベルは変更されず、redrawView にも移動しません (NSLog redrawView はありません)。
Here is the log:
2012-07-08 12:29:19.193 CalculatorGraph[2641:f803] GraphViewController.displayGraph
2012-07-08 12:29:19.194 CalculatorGraph[2641:f803] self.programData (
22
)
2012-07-08 12:29:19.194 CalculatorGraph[2641:f803] description lable 22
2012-07-08 12:29:19.195 CalculatorGraph[2641:f803] text is 22
ここで、ボタンを押すと、すべてが機能しているように見えます。ラベルを更新し、ビューとビュー内の drawRect を再描画します。私の問題を参照してください。
2012-07-08 14:16:54.358 CalculatorGraph[2743:f803] IBAction redraw
2012-07-08 14:16:54.358 CalculatorGraph[2743:f803] myData <GraphViewController: 0x6d3f1f0>
2012-07-08 14:16:54.359 CalculatorGraph[2743:f803] text is CCCC
2012-07-08 14:16:54.359 CalculatorGraph[2743:f803] redrawView
2012-07-08 14:16:54.360 CalculatorGraph[2743:f803] redrawView
2012-07-08 14:16:54.362 CalculatorGraph[2743:f803] graphView.drawRect
2012-07-08 14:16:54.363 CalculatorGraph[2743:f803] data in graphView DrawRect is: <GraphViewController: 0x6d3f1f0>
ストーリーボードのスクリーンショット: コメントの下のリンクを参照してください...
ありがとうございました