You need to implement protocol method for custom UIView class.
For example;
#import <UIKit/UIKit.h>
@protocol YourCustomViewDelegate <NSObject>
- (void)buttonTapped;
@end
@interface YourCustomView : UIView
@property (nonatomic, strong) id< YourCustomViewDelegate > delegate;
@end
And the .m file you can call buttonTapped delegate method.
- (void)myCustomClassButtonTapped:(id)sender
{
[self.delegate buttonTapped];
}
For proper work;
- set your custom view delegate to self in your custom view controller.
- add buttonTapped method to that view controller
- And do what you want in that method. Present/Push view controllers like the other answers explained.
Edit
I will try to illustrate very simple usage of protocols, hope it will help you.
#import "MyViewController.h"
#import "YourCustomView.h"
@interface MyViewController ()<YourCustomViewDelegate> // this part is important
@end
@implementation MyViewController
- (void)viewDidLoad {
[super viewDidLoad];
YourCustomView *customView = // initialize your custom view, I suppose that you already did it
customView.delegate = self;
}
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
- (void)buttonTapped
{
YOUR_VIEW_CONTROLLER_CLASS *viewCon =[storyboard instantiateViewControllerWithIdentifier:@"mainVC"]; //mainVC is just a example and u will have to replace it with your viewController storyboard id
//Pushing VC
[self.navigationController pushViewController:viewCon animated:YES];
}
6
solved How to push or present UIViewcontroller or storyboard from UIView subclass?