作为参考,我正在尝试通过斯坦福 iTunes-U 课程学习 Objective-C。我想从另一个属性的设置器中更新一个属性(它们本质上是连接的。另外,那是不好的风格吗?)。我要更新的属性是一个 UILabel,但它不像我想的那样工作。这段代码在我的一个视图控制器中:
-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
[segue.destinationViewController setProgram:self.brain.program];
}
自然地,这段代码调用了传入 viewController 的 Program 属性的 setter。这是设置器代码:
-(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
现在,当这段代码运行时,随着 segue 的发生,新视图的标题确实发生了变化(self.title 行有效)。但是,UILabel 不会更新。此外,如果我在 viewDidLoad 中再次调用 setter,它确实会更改 UILabel。是因为self
更新了吗?这里发生了什么?