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!