我正在构建一个具有主视图的应用程序,该视图由地图视图组成。第二个视图有一些必要的配置选项(配置视图)。我使用部分curl segue来查看此配置视图。
我遇到的问题是我的配置视图状态没有得到维护。
例如,
我将进入配置视图,对设置进行一些更改并返回主Map视图。一旦我再次返回配置视图,值就会恢复为默认值。有问题的值是 distanceFilterValue 。
这是我的配置视图控制器的实现:
@interface SimpleConfigViewController()
//private interface inside implementation
@property (weak, nonatomic) UISlider * distanceFilterSlider;
@property (strong, nonatomic) NSNumber *distanceFilterValue;
@end
@implementation SimpleConfigViewController
@synthesize distanceFilterLabel = _distanceFilterLabel;
@synthesize distanceFilterSlider = _distanceFilterSlider;
@synthesize distanceFilterValue = _distanceFilterValue;
- (NSNumber *)distanceFilterValue {
if (!_distanceFilterValue) {
_distanceFilterValue = [NSNumber numberWithFloat:250.0];
}
return _distanceFilterValue;
}
- (IBAction)distanceSliderValueChanged:(UISlider *)sender {
self.distanceFilterValue = [NSNumber numberWithFloat:sender.value];
//update GUI
self.distanceFilterLabel.text = [NSString stringWithFormat:@"%.f m", sender.value];
}
@end
在我看来,因为我保留了一个指向distanceFilterValue的强指针,当我返回到配置视图时,这个值应该是正确的。我在这里显然遗漏了一些东西。
提前感谢您的帮助。
答案 0 :(得分:0)
我可能错了,但我猜配置视图已卸载,并在第二次推送时再次从XIB
加载。
您应该将值存储在模型对象中,而不是存储在控制器中!
答案 1 :(得分:0)
我认为Erik是对的,每次为configView调用viewDidLoad时它都会重置。您可以使用Singleton或NSUserDefaults来解决此问题。