Pergunta

Eu estou usando o meu próprio costume NavigationBar, mas eu preciso para acessá-lo em um número de diferentes pontos de vista porque eu preciso para adicionar botões, título mudança e assim por diante.

Devo passar uma referência ao meu NavigationBar cada vez que eu mostrar um novo ponto de vista, ou apenas torná-lo um singleton para que eu possa acessá-lo a partir de qualquer ponto de vista?

Foi útil?

Solução

Faça isso uma variável global.

Outras dicas

Nem.

Você tem listados adicionar botões e mudando títulos como as razões que você precisa de uma barra de ferramentas personalizada, mas ambas as coisas pode ser feito através do controlador de navegação sem a necessidade de criar o seu próprio e, portanto, não há necessidade de criar um singleton ou uma variável global.

Quando você empurrar um novo controlador de visualização, você pode definir o título para a barra de navegação simplesmente chamando [auto setTitle: @ "Nav Título"]; no -viewDidLoad de que controlador de vista. Se você precisa adicionar um código do botão, o uso como o seguinte (também em -viewDidLoad):

[[self navigationItem] setRightBarButtonItem:[[[UIBarButtonItem alloc]
        initWithBarButtonSystemItem:UIBarButtonSystemItemEdit 
                             target:self 
                             action:@selector(setEditing)] autorelease]];

Em outras palavras, seu projeto é falho se você estiver criando uma barra de navegação personalizada só pelas razões que você listou. Suponho que há algumas boas razões para criar uma barra de navegação personalizada, mas estes não estão entre eles.

Considerar a revisão do Configurando seção do objeto item de navegação do View Controller Guia de Programação para o iPhone OS .

Com os melhores cumprimentos,

Você está usando um UINavigationController? Se assim for, você pode acessar a barra de navegação a partir de qualquer sub-controlador como este:

UINavigationBar *bar = self.navigationController.navigationBar;
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top