У вас есть много вариантов, но то, что вы должны использовать, зависит от того, нужно ли обоим viewControllers уведомлять об изменении значения.
Если вам не нужно уведомление, самый простой выбор - использовать глобальную переменную BOOL
, хотя пуристы посмеются над этим предложением. Но на самом деле это две строки кода, и все готово. Другой вариант - сохранить значение в NSUserDefaults
.
Если вам нужно уведомление об изменении в каждом viewController, возможно, самый чистый дизайн - написать метод set в одном viewController, который устанавливает значение как в самом себе, так и в другом viewController. Что-то вроде:
-(void) setMyBool:(BOOL)newValue
{
myBool = newValue;
otherViewController.myBool = newValue;
}
Если вы хотите изменить значение из любого viewController, оно становится немного сложнее, потому что вы должны иметь каждый viewController, сохраняющий ссылку на другое и не повторять при установке значения. Что-то вроде:
-(void) setMyBool:(BOOL)newValue
{
if ( self.busyFlag == YES )
return;
self.busyFlag = YES;
myBool = newValue;
otherViewController.myBool = newValue;
self.busyFlag = NO;
}
Еще один вариант - использовать NSNotifications
, чтобы изменить значение и заставить каждый класс viewController прослушивать уведомление об изменении. И предложение TheEye о написании класса-обертки и сохранении ссылки на экземпляр этого класса в обоих viewControllers тоже будет работать.
Если вам не нужны уведомления об изменениях, я бы просто создал глобальную переменную BOOL
и продолжил бы работу с остальной частью приложения, потому что это так просто, надежно и сложно испортить.