Если вы не возражаете против введения связи между двумя классами, вы всегда можете просто дать FlipsideViewController ссылку на mainViewController и заставить его напрямую указывать метод. Или вы можете сделать так, чтобы FlipsideViewController отправлял соответствующее сообщение своему делегату при изменении значения, которое затем могло бы ткнуть в mainViewController.
Но с точки зрения избежания ненужной связи лучший способ состоит в том, чтобы mainViewController прослушивал NSUserDefaultsDidChangeNotification
, который будет автоматически отправляться при вызове setBool:forKey:
.
Запрошенное редактирование:
В Main.m добавьте метод, подобный этому:
- (void)startOrStopTimer {
NSUserDefaults *defs = [NSUserDefaults standardUserDefaults];
if ([defs boolForKey:activateautoplay]) {
if (!self.Autotimer) self.Autotimer = [NSTimer scheduledTimerWithTimeInterval:1 target:self selector:@selector(updateImagePosition:) userInfo:nil repeats:YES];
} else {
[self.Autotimer invalidate];
self.Autotimer = nil;
}
}
Затем измените awakeFromNib
на что-то вроде этого:
- (void)awakeFromNib {
[self startOrStopTimer];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(startOrStopTimer) name:NSUserDefaultsDidChangeNotification object:nil];
}
И обязательно добавьте это к dealloc
:
[[NSNotificationCenter defaultCenter] removeObserver:self];
Нет необходимости вносить изменения в FlipsideViewController, и комплект настроек не требуется.