Я решил эту проблему следующим образом.
Я создаю протокол Objective-C, который содержит один обязательный метод
@protocol MyProtocolForState <NSObject>
- (void)changeStateButton;
Далее я создаю класс A - этот класс содержит кнопку, которая будетв паре с другим классом (класс B)
#import "MyProtocolForState.h"
@interface A : UIViewController <MyProtocolForState>{
id<MyProtocolForState.h> delegate;
}
@property (nonatomic, assign)id<MyProtocolForState.h> delegate;
- (IBAction)touchButton:(id)sender;
В файле реализации я добавил метод делегата и метод реакции
- (IBAction)touchButton:(id)sender {
[self.view setBackgroundColor:[UIColor redColor]];
[delegate changeMethod];
}
- (void)changeMethod{
[self.view setBackgroundColor:[UIColor whiteColor]];
}
Далее я создаю класс B - этот класс содержит кнопку, которая будет сопряженас другим классом (класс A)
#import "MyProtocolForState.h"
@interface B : UIViewController <MyProtocolForState>{
id<MyProtocolForState.h> delegate;
}
@property (nonatomic, assign)id<MyProtocolForState.h> delegate;
- (IBAction)touchButton:(id)sender;
В файле реализации я добавил метод делегата и метод реакции
- (IBAction)touchButton:(id)sender {
[self.view setBackgroundColor:[UIColor redColor]];
[delegate changeMethod];
}
- (void)changeMethod{
[self.view setBackgroundColor:[UIColor whiteColor]];
}
Далее я создаю экземпляр класса A и класс B и связываю их
A * a = [[A alloc] init];
[a.view setFrame:CGRectMake(50, 50, 100, 100)];
B * b = [[B alloc] init];
[b.view setFrame:CGRectMake(200, 50, 100, 100)];
a.delegate = b;
b.delegate = a;
[self.window addSubview:a.view];
[self.window addSubview:b.view];
Когда я нажимаю на кнопку в одном классе в другом классе, мы вызываем метод делегата и меняем состояние для просмотра.