Ich habe eine benutzerdefinierte UIView-Klasse erstellt. Ich möchte eine Aktion aufrufen, wenn der BackButton aufgerufen wird. Sie müssen diese UIView-Klasse zusammen mit Aktionen in allen View-Controllern wiederverwenden. Kann ich in der UIView-Klasse selbst schreiben oder Controller anzeigen?Wie können wir Aktion in benutzerdefinierten UIView-Klasse aufrufen? Sie müssen die UIView-Klasse in allen View-Controllern wiederverwenden
#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 Aktion
-(void)backButtonAction{
[[self navigationController] popViewControllerAnimated:YES];
}
Ihr Problem ist, dass ein 'UIView' keine' navigationController' Eigenschaft hat. Das gibt es für einen View-Controller. Sie erhalten möglicherweise, was Sie wollen, indem Sie einen Delegaten mit Ihrer Ansicht verknüpfen und die Aktion der Schaltfläche dem Delegaten (View-Controller) mitteilen, dass er die Anfrage "zurück" bearbeitet. –
Ja. Vielen Dank für Ihre Antwort. Fertig mit Delegierten. Es funktioniert, wenn ich den View-Controller anrufe. Aber ich was Delegierte auslösen, wenn ich den uibutton drücke? Wie kann ich fortfahren? – Balasubramanian
Ich bin mir nicht sicher, ob ich das verstehe. Wenn Sie jetzt einen Delegaten in Ihrer benutzerdefinierten Ansicht haben, können Sie jede Delegate-Methode aufrufen, die Sie in "backButtonAction" definiert haben. –