参考までに、私はスタンフォード大学のiTunes-UコースでObjective-Cを学ぼうとしています。あるプロパティを別のセッターから更新したかったのです(それらは本質的に接続されています。また、それは悪いスタイルですか?)。更新しようとしているプロパティはUILabelですが、思ったように機能しません。このコードは私のViewControllerの1つにあります:
-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
[segue.destinationViewController setProgram:self.brain.program];
}
当然、このコードは、着信viewControllerのProgramプロパティのセッターを呼び出します。そのセッターコードは次のとおりです。
-(void)setProgram:(id)program {
_program = program;
self.title = [CalculatorBrain descriptionOfProgram:program];
[self.graphview setNeedsDisplay];
self.testLabel.text = @"Trying to update your text!";
}
およびヘッダーファイル:
#import <UIKit/UIKit.h>
@interface GraphViewController : UIViewController
@property (nonatomic, strong) id program;
@property (weak, nonatomic) IBOutlet UILabel *testLabel;
@end
これで、このコードが実行されると、セグエが発生すると、新しいビューのタイトルが変更されます(self.title行が機能します)。ただし、UILabelは更新されません。さらに、viewDidLoadでセッターをもう一度呼び出すと、UILabelが変更されます。これはself
更新されたためですか?何が起きてる?