Я создал пользовательский класс UIView. Я хочу вызвать действие при вызове backButton. Необходимо повторно использовать этот класс UIView вместе с действиями во всех контроллерах представлений. могу ли я писать в классе UIView или в контроллере просмотра?Как мы можем вызвать действие в пользовательском классе UIView? Необходимо повторно использовать класс UIView во всех контроллерах View
#import "CustomView.h"
@implementation CustomView
- (instancetype)init {
if(self = [super init]){
//-------------------custom headerView----------------
self.headerView = [[UIView alloc]init];
self.headerView.frame = CGRectMake(0, 0, SCREEN_WIDTH, 40);
self.headerView.backgroundColor = [UIColor redColor];
[self addSubview:self.headerView];
self.backButton = [[UIButton alloc]initWithFrame:CGRectMake(5,13, 12, 16)];
[self.backButton setImage:[UIImage imageNamed:@"back-btn.png"]
forState:UIControlStateNormal];
[self.backButton addTarget:self
action:@selector(backButtonAction)
forControlEvents:UIControlEventTouchUpInside];
[self.headerView addSubview:self.backButton];
}
return self;
}
BackButton Действие
-(void)backButtonAction{
[[self navigationController] popViewControllerAnimated:YES];
}
Ваша проблема заключается в том, что 'UIView' не имеет' свойство navigationController'. Это существует для контроллера вида. Вы можете получить то, что хотите, имея делегата, связанного с вашим представлением, и позволяя действию кнопки сообщать делегату (контроллеру просмотра) обрабатывать запрос «назад». –
Да. Спасибо за ваш ответ. Выполнено с делегатами. Он работает, когда я вызываю контроллер вида. Но я, что вызвать делегатов, когда я нажимаю uibutton? Как я могу продолжить? – Balasubramanian
Я не уверен, что понимаю. Если теперь у вас есть делегат в своем пользовательском представлении, вы можете вызвать любой метод делегата, который вы определили внутри 'backButtonAction'. –