Hinzufügen von Schaltflächen zur Titelansicht von NavigationBar, ohne den Code wiederholen zu müssen

Als Hintergrund mache ich eine UINavigationControlled-basierte Blog-App (ich nehme an, sie ähnelt der iPhone-Facebook-App am ehesten). Unabhängig von der derzeit aktiven Ansicht werden in der Navigationsleiste einige Schaltflächen im Titelbereich angezeigt, z. B. Freundschaftsanfragen und Aktivitätsbenachrichtigungen. Ähnlich wie bei der Facebook-App wird durch Klicken auf diese Schaltflächen eine Popup-Ansicht erstellt.

Momentan mache ich Dinge auf eine Art und Weise, die ich für unglaublich ineffizient halte. Für jede Ansicht, die geladen wird, erstelle ich die Schaltflächen neu und füge sie der Navigationsleiste hinzu. Mein Code ist unten:

<code>//Setup the custom middle buttons
UIView *container = [[UIView alloc] init];
container.frame = CGRectMake(0, 0, 80, 44);

// create a button and add it to the container
UIButton *notificationButton = [UIButton buttonWithType:UIButtonTypeCustom];
notificationButton.frame = CGRectMake(0, 0, 35, 44);
[notificationButton addTarget:self 
                       action:@selector(showNotifications:) 
             forControlEvents:UIControlEventTouchUpInside];
[container addSubview:notificationButton];


// add another button to the container
UIButton *friendActivityButton = [UIButton buttonWithType:UIButtonTypeCustom];
friendActivityButton.frame = CGRectMake(45, 0, 35, 44);
[friendActivityButton addTarget:self 
                         action:@selector(showFriendActivity:) 
               forControlEvents:UIControlEventTouchUpInside];
[container addSubview:friendActivityButton];

// Set the titleView to the container view
[self.navigationItem setTitleView:container];
[container release];
</code>

Da meine App mehrere Ansichten hat und die Navigationsleiste immer sichtbar ist, erscheint es unsinnig, die Schaltflächen immer wieder neu zu erstellen, sie einer Containeransicht hinzuzufügen und diese Ansicht dann der Titelansicht des Navigationscontrollers hinzuzufügen.

Was wäre ein besserer Weg, um den gleichen Effekt zu erzielen? Ich habe nach Unterklassen gesucht oder eine Kategorie für UINavigationBar erstellt und dort möglicherweise den Code für die Containeransicht hinzugefügt. Ich wusste jedoch nicht, wie ich die Selektoren in diesen Fällen zum Laufen bringen sollte. Ich war mir auch nicht sicher, wie ich mit einer UINavigationBar-Kategorie auf die titleView-Eigenschaft zugreifen sollte.

Jede Hilfe dazu wäre großartig! Vielen Dank!

Antworten auf die Frage(1)

Ihre Antwort auf die Frage