2016-05-17 8 views
2

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 
+0

Ihre Frage scheint vernünftig, wenn ein bisschen naiv, so dass ich es upvoted. –

+0

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. –

+0

Danke, ja, ich habe es für den Code, den Shubhank hinterlassen hat, abgeschaltet. –

Antwort

1

werfen Sie Ihre Navigator Bar zu MyCustomNavigationBar

+0

Danke würde gerne wissen, warum ich downvoted wurde, aber das hat super funktioniert! –

+0

Yup, nicht wissen, warum es downvoted wurde. Gute Frage, ich habe meine Aufzählung gemacht. – Shubhank