Ich versuche, benutzerdefinierte Elemente einschließlich Dropdown-Menüs und Ansicht von meinem navigationBar
zu ändern, aus diesem Grund brauche ich eine benutzerdefinierte. Wenn Sie jedoch versuchen, den Delegaten auf den View-Controller zu setzen, wird ein Fehler ausgegeben.Set Delegate für eine benutzerdefinierte UINavigationBar
@interface MyViewController : UIViewController <MyCustomNavigationBarDelegate>
@implementation MyViewController
- (void)viewDidLoad {
[super viewDidLoad];
UINavigationController *nav = [[UINavigationController alloc] initWithNavigationBarClass:[MyCustomNavigationBar class] toolbarClass:[UIToolbar class]];
nav.navigationBar.assessmentDelegate = self;
}
Die letzte Zeile führt den Fehler Property ‚assessmentDelegate
‘ nicht auf Objekt gefunden Typ ‚UINavigationBar
*‘ Allerdings sollte es Art von Klasse MyCustomNavigationBar
sein, die eindeutig die Delegierten hat:
@protocol MyCustomNavigationBarDelegate;
@interface MyCustomNavigationBar : UINavigationBar
@property (weak, nonatomic) id <MyCustomNavigationBarDelegate> assessmentDelegate;
@end
@protocol MyCustomNavigationBarDelegate <NSObject>
-(void)presentViewController:(UIAlertController *)alert;
@end
Ihre Frage scheint vernünftig, wenn ein bisschen naiv, so dass ich es upvoted. –
Beachten Sie, dass die von Ihnen verwendete Methode "initWithNavigationBarClass" Ihr Leben wahrscheinlich erschwert. Die Dokumentation sagt "Um die allgemeine Darstellung einer Navigationsleiste anzupassen, verwenden Sie UIAppearance APIs anstelle dieser Methode. Wenn Sie diese Initialisierungsmethode verwenden, um eine Navigationsleiste mit benutzerdefinierten Barunterklassen zu erstellen, sind Sie verantwortlich für das Verschieben und Festlegen von Ansichtscontrollern vor der Präsentation der Navigationscontroller auf dem Bildschirm. " Es klingt also so, als ob Sie bei dieser Methode die Bürde einer ordentlichen Menge zusätzlicher Haushaltsführung bekommen. –
Danke, ja, ich habe es für den Code, den Shubhank hinterlassen hat, abgeschaltet. –