delegation patternを使用してください。あなたは、コントローラAで待機しているアクションがあるでしょうが、その代わりにBに変更された値に応答してのアクションはBによってトリガされたときに適切な
ViewControllerB.h
// Create delegate protocol and property
@protocol ViewControllerBDelegate <NSObject>
- (void)switchPressed:(BOOL)switchStatus;
@end
@interface ViewControllerB : NSObject
@property (nonatomic,weak) id<ViewControllerBDelegate> delegate;
@end
ViewControllerB.m
// When switch is tapped, call delegate method if it is implemented by delegate object
- (IBAction)flip: (id) sender {
UISwitch *onoff = (UISwitch *) sender;
if ([self.delegate respondsToSelector:@selector(switchPressed:)]) {
[self.delegate switchPressed:onoff.on];
}
}
ViewControllerA.h
// Conform to ViewControllerB protocol
#import ViewControllerB.h
@interface ViewControllerA : NSObject,ViewControllerBDelegate
ViewControllerA.m
// Set self (VC A) as VC B's delegate
- (void)ViewDidLoadOrSomeOtherFunction {
ViewControllerB *vcB = [[ViewControllerB alloc] init];
vcB setDelegate = self;
}
// Implement delegate method
- (void)switchPressed:(BOOL)switchStatus {
if (switchStatus) {
// Make changes on VC A
}
}