2012-02-07 5 views
0

マップビューで構成されるメインビューを持つアプリケーションを構築しています。 2番目のビューには、必要な設定オプションがいくつかあります(設定ビュー)。私は部分的なカール・セグを使ってこの設定ビューにセグをします。複数のビュー間でのメモリの管理

問題は、私の設定ビューの状態が維持されていないことです。例えば

私は、設定ビューにセグエの設定に変更を加えると、メインマップビューに戻ります。設定ビューに戻ったら、値はデフォルト値に戻ります。問題の値は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

さて、実際にマップビューに設定値を配線する前に、設定ビューをマップビューから独立させようとしています。 – CallMeRex

答えて

0

私は間違っている可能性がありますが、設定ビューがアンロードされていて、2回目にプッシュされたときにXIBから再度読み込まれたと思います。

コントローラにではなく、モデルオブジェクトに値を格納する必要があります。

+0

私はこれをテストするためのメッセージをログに記録しました。私はconfigビュー* viewDidLoad *の最初の読み込み時にそれを検出しました。しかし、Mapビューに戻ると* viedDidUnload *は呼び出されません。 – CallMeRex

+0

モデルオブジェクトにdistanceFilterValueを置く必要がありますが、NSNumberオブジェクトへの強力なポインタを保持しないと、同じ効果が得られますか?私のモデルは、私が強力なポインタを保持するためのラッパークラスになります。 – CallMeRex

0

私はあなたがconfigViewのためにviewDidLoadを呼び出すたびに、それがリセットされると思います。これを解決するには、SingletonまたはNSUserDefaultsを使用することができます。

+0

distanceFilterValueへの私の強いポインターがいつリリースされているのか分かりません(何故私は思っています)。 – CallMeRex

+0

あなたのconfigViewのviewDidLoadには何がありますか? – PhillM

+0

ちょうど標準[super viewDidLoad]; – CallMeRex