Adicionando botões ao titleview do NavigationBar sem ter que repetir o código

Para dar algumas informações, estou criando um aplicativo de tipo de blog baseado em UINavigationControll (suponho que seja mais parecido com o aplicativo de facebook do iPhone). Independentemente da exibição que está atualmente ativa, o NavigationBar mostra alguns botões em sua área de título, como Pedidos de amizade e Notificações de atividade. Da mesma forma que o aplicativo do facebook, clicar nesses botões criará uma visualização pop-up.

Atualmente, estou fazendo as coisas de uma forma que me parece extremamente ineficiente. Para cada exibição carregada, estou recriando os botões e adicionando-os à barra de navegação. Meu código está abaixo:

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

Como meu aplicativo tem várias exibições e a barra de navegação está sempre visível, parece tolo continuar recriando os botões, adicionando-os a uma exibição de contêiner e, em seguida, adicionando essa exibição ao títuloView do controlador de navegação.

Qual seria a melhor maneira de conseguir o mesmo efeito? Eu estava olhando para subclasses ou criando uma categoria para UINavigationBar e talvez adicionando o código de exibição de contêiner lá. No entanto, eu não sabia como fazer os seletores funcionarem nesses casos. Eu também não tinha certeza de como obter acesso à propriedade titleView com uma categoria UINavigationBar.

Qualquer ajuda nisso seria ótimo! Obrigado!

questionAnswers(1)

yourAnswerToTheQuestion