2012-02-07 2 views
0

Я создаю приложение, которое имеет основной вид, который состоит из вида карты. Во втором представлении есть некоторые необходимые параметры конфигурации (вид конфигурации). Я перехожу к этому конфигурационному представлению, используя частичный скручивание.Управление памятью по нескольким представлениям

Проблема, с которой я столкнулся, - состояние моего конфигурационного представления не поддерживается.

Например,

я непосредственно перейти в поле зрения конфигурации, внести некоторые изменения в настройки и вернуться к главному Карты. Как только я снова вернусь к представлению конфигурации, значения вернутся к значениям по умолчанию. Значение, о котором идет речь, составляет 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

Я мог ошибаться, но я думаю, что конфигурационный вид выгружен и снова загружен из XIB, когда он был нажат второй раз.

Вы все равно должны хранить свои значения в объекте модели, а не в контроллере!

+0

Я разместил для регистрации сообщений, чтобы проверить это, и я обнаружил, что при первой загрузке представления конфигурации * viewDidLoad * вызывается. Но после возврата к виду карты * viedDidUnload * не вызывается. – CallMeRex

+0

Я понимаю, что I * должен * помещать distanceFilterValue в объект модели, но не сохраняет сильный указатель на объект NSNumber, добиваясь такого же эффекта? Моя модель была бы простой оболочкой, для которой я бы сохранил сильный указатель. (Это мой мыслительный процесс, я вполне мог ошибаться в этом предположении) – CallMeRex

0

Я думаю, что Эрик прав, каждый раз, когда вы вызываете viewDidLoad для своего configView, он сбрасывается. Вы можете использовать Singleton или NSUserDefaults, чтобы решить эту проблему.

+0

Я предполагаю, что я не понимаю, в какой момент (и почему) мой сильный указатель на distanceFilterValue * выпущен *? – CallMeRex

+0

Что находится в представленииDidLoad в вашем configView? – PhillM

+0

Только стандартный [super viewDidLoad]; – CallMeRex

Смежные вопросы