Ich versuche die Navigationsleiste anzupassen, indem ich eine benutzerdefinierte Schaltfläche zum rightBarButtonItem hinzufüge. Eine zu erstellen ist ziemlich einfach.Hinzufügen von Aktion und Ziel zu einem benutzerdefinierten Navigations-BarButtonItem?
UIImage *myImage = [UIImage imageNamed:@"menu-icon.png"];
UIButton *myButton = [UIButton buttonWithType:UIButtonTypeCustom];
[myButton setFrame:CGRectMake(0, 0, myImage.size.width, myImage.size.height)];
[myButton setBackgroundImage:myImage forState:UIControlStateNormal];
UIBarButtonItem *myButtonItem = [[UIBarButtonItem alloc] initWithCustomView:myButton];
[navItem setLeftBarButtonItem:myButtonItem animated:YES];
Sieht gut aus, außer dass ich jetzt die Ziel- oder Aktionseigenschaften nicht einstellen kann. Der folgende Code tut nichts:
myButtonItem.target = myTarget;
myButtonItem.action = @selector(myButtonAction);
Ich fand, dass der Grund, warum es nicht funktioniert, weil ich die UIBarButtonItem mit -initWithCustomView initialisiert. Apples Dokumentation sagt:
Das bar-Button-Element, das von dieser Methode erstellt wird, ruft die Aktionsmethode seines Ziels als Reaktion auf Benutzerinteraktionen nicht auf. Stattdessen erwartet das Balkenschaltflächenelement, dass die angegebene benutzerdefinierte Ansicht alle Benutzerinteraktionen verarbeitet und eine entsprechende Antwort bereitstellt.
Ich bin etwas verwirrt, was genau Apple damit meint. Soll ich ein benutzerdefiniertes Steuerelement oder etwas erstellen? Ich habe das noch nicht wirklich gemacht und bin mir nicht sicher, wo ich anfangen soll.
Hat jemand irgendwelche Vorschläge, wie Sie dies oder eine alternative Möglichkeit zum Einrichten einer benutzerdefinierten Navigationsleistenschaltfläche ausführen können?
ANTWORT -------------------------------------------- --------------
Nur hatte diese Methode der UIButton hinzuzufügen:
[myButton addTarget:myTarget action:@selector(myButtonAction) forControlEvents:UIControlEventTouchUpInside];
Danke, habe nicht gemerkt, dass es so einfach war. – DJSK