You can use custom delegates, which is used for sending messages from one object to another. So when you pressed the button of another view controller then just send the color in the method of custom delegates. Refer this Write Custom Delegates in this StackOverflow answer
Refer below sample code to change the color of button:-
secondVwController.h class
@protocol customDelegateColor <NSObject>
@required
-(void)getColor:(UIColor*)color;
@end
@interface BWindowController : NSWindowController
{
id<customDelegateColor>delegate;
}
@property(nonatomic,assign)id<customDelegateColor>delegate;
@end
secondVwController.m class
- (IBAction)buttonPressed:(id)sender
{
//below only calling the method but it is impelmented in AwindowController class
if([[self delegate]respondsToSelector:@selector(getDataValue)]){
[[self delegate]getColor:[UIColor redColor]];
}
}
firstVwController.h class
@interface AWindowController : NSWindowController< customDelegateColor> //conforming to the protocol
firstVwController.m class
//Implementing the protocol method
-(void)getColor:(UIColor*)color
{
self.btn.color=color;
}
//In this method setting delegate AWindowController to BWindowController
-(void)someMethod{
BWindowController *b=[[BWindowController alloc]init];
}
-(IBAction)buttonPressed:(id)sender
{
b.delegate=self; //here setting the delegate
}
0
solved Change button color by pressing another button