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

  1. In ViewB create protocol as
@protocol ViewBDelegate 

-(void) exampleDelegateMethod;

@end
  1. Declare the delegate in the sender class
@interface ViewB : UIView
@property (nonatomic, weak) id< ViewBDelegate > delegate;
@end
  1. Adopt the protocol in Class ViewA

@interfac ViewA: UIView < ViewBDelegate >

  1. Set the delegate
-(void) anyFunction   
   {
       // create Class ViewB's instance and set the delegate
       [viewB setDelegate:self];
   }
  1. Implement the delegate method in class ViewA
-(void) exampleDelegateMethod
{
    // will be called by Class ViewB's instance
}
  1. Use the method in class ViewB to call the delegate method as
-(void) callDelegateMethod
{
    [delegate exampleDelegateMethod];
    //assuming the delegate is assigned otherwise error
}