Это не способ сделать это, вы должны использовать делегатов, я предполагаю, что у нас есть два контроллера представления ViewController1 и ViewController2, и этот элемент проверки находится в первом, и когда его состояние изменяется, вы хотите что-то сделать вViewController2, чтобы добиться этого надлежащим образом, вы должны сделать следующее:
Добавить новый файл в ваш проект (Протокол Objective-C) Файл -> Новый, теперь назовите его ViewController1Delegate или как хотите, и напишитеони между директивами @interface и @end
@optional
- (void)checkStateDidChange:(BOOL)checked;
Теперь перейдите к ViewController2.h и добавьте
#import "ViewController1Delegate.h"
, затем измените его определение на
@interface ViewController2: UIViewController<ViewController1Delegate>
Сейчасперейдите к ViewController2.m и внутри реализации добавьте:
- (void)checkStateDidChange:(BOOL)checked {
if (checked) {
// Do whatever you want here
NSLog(@"Checked");
}
else {
// Also do whatever you want here
NSLog(@"Not checked");
}
}
Теперь перейдите к ViewController1.h и добавьте следующее свойство:
@property (weak, nonatomic) id<ViewController1Delegate> delegate;
Теперь, если вы создаете ViewController1 внутри ViewController2 послекакое-то событие, то вы должны сделать это следующим образом, используя файлы NIB:
ViewController1* controller = [[NSBundle mainBundle] loadNibNamed:@"ViewController1" owner:self options:nil][0];
controller.delegate = self;
[self presentViewController:controller animated:YES completion:nil];
Теперь все готово, когда вы обнаруживаете событие проверкиизменилось в ViewController1, все, что вам нужно сделать, это ниже
[delegate checkStateDidChange:checked]; // You pass here YES or NO based on the check state of your control
Пожалуйста, скажите мне, если есть что-то, что не ясно, если я не правильно понял ваш вопрос.