Suppose you have two views ViewA
and ViewB
Instance of ViewB
is created inside ViewA
, so ViewA
can send message to ViewB's
instance, but for the reverse to happen we need to implement delegation (so that using delegate ViewB's
instance could send message to ViewA
)
Follow these steps to implement the delegation
In ViewB
create protocol as
@protocol ViewBDelegate
-(void) exampleDelegateMethod;
@end
Declare the delegate in the sender class
@interface ViewB : UIView
@property (nonatomic, weak) id< ViewBDelegate > delegate;
@end
Adopt the protocol in Class ViewA
@interfac ViewA: UIView < ViewBDelegate >
Set the delegate
-(void) anyFunction
{
// create Class ViewB's instance and set the delegate
[viewB setDelegate:self];
}
Implement the delegate method in class ViewA
-(void) exampleDelegateMethod
{
// will be called by Class ViewB's instance
}
Use the method in class ViewB
to call the delegate method as
-(void) callDelegateMethod
{
[delegate exampleDelegateMethod];
//assuming the delegate is assigned otherwise error
}