Frage

Ich habe viele von Anwendungen gesehen, die eine Info-Button (den Buchstaben „i“ mit einem Kreis um ihn herum) hat auf der UINavigationBar. Wie kann ich diese Art von Taste?

War es hilfreich?

Lösung

Die vorherige Antwort war in der Nähe, nicht ganz zusammenstellen. Hier ist, was Sie wirklich wollen:

// Info button
UIButton* infoButton = [UIButton buttonWithType:UIButtonTypeInfoLight]; 
[infoButton addTarget:self action:@selector(showInfoView:) forControlEvents:UIControlEventTouchUpInside];
self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithCustomView:infoButton];

Andere Tipps

Es gibt Speicherverlust in der Antwort oben. Sie sollten „Autofreigabe“ zu vermeiden, es zu benutzen. Ich habe versucht, die Antwort zu bearbeiten, aber ich war nicht erfolgreich, so weit.

// Info button
UIButton* infoButton = [UIButton buttonWithType:UIButtonTypeInfoLight]; 
[infoButton addTarget:self action:@selector(showInfoView:) forControlEvents:UIControlEventTouchUpInside];
self.navigationItem.leftBarButtonItem = [[[UIBarButtonItem alloc] initWithCustomView:infoButton] autorelease];

Dies ist der richtige Weg, es zu tun.

Es sollte möglich sein, eine „Info Light“ Typ-Taste, um die navigationItem der View-Controller hinzuzufügen, die die UINavigationController momentan angezeigt wird. So etwas wie dies in Ihrem View-Controller-Code gehen könnte:

- (void) viewDidLoad {
  UIButton * info = [UIButton buttonWithType:UIButtonTypeInfoLight];
  // set your button's target and selector for whatever action here.
  self.navigationItem.rightBarButtonItem.customView = info;
}

Sie können auch Ihr aktuelles Bar-Taste Elements des Ziel und Wähler für die Info-Taste verwenden.

UIButton *infoButton = [UIButton buttonWithType:UIButtonTypeInfoLight];
[infoButton addTarget:self.barButtonItem.target action:self.barButtonItem.action forControlEvents:UIControlEventTouchUpInside];
self.barButtonItem.customView = infoButton;

Auf diese Weise alle Aktionen oder segues zu Ihrem Bar-Taste Elemente gekoppelt werden Ihre Info-Taste übertragen werden.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top