Pergunta

O que eu quero

Uma barra de navegação totalmente personalizada, que persistirá e permitirá a interação do usuário por meio de transições modais personalizadas.

O que eu fiz

Eu construí um controlador de visualização pai que contém uma visualização de contêiner na parte inferior e uma visualização (a barra de navegação personalizada) na parte superior.O Container View incorpora um controlador de visualização que pode apresentar outros controladores de visualização modalmente.

Os controladores de visualização apresentados modalmente usam uma transição personalizada (UIViewControllerTransitioningDelegate) para aparecer na parte inferior e ocupar apenas a parte do controlador de visualização na parte inferior (ou seja,deixando o menu visível).

Quando o primeiro controlador de visualização é apresentado modalmente, ainda é possível interagir com o menu de navegação personalizado.No entanto, se o primeiro controlador de visualização apresentado modalmente, por sua vez, apresentar outro controlador de visualização, a barra de navegação personalizada não responderá à interação do usuário.

|  NAV BAR  |             
|-----------|             |------------|               |------------|              
| Container |             |   View     |               |    View    |             
|   view    |-> EMBED ->  | Controller |-> Presents -> | Controller |-> Presents ->
|           |             |            |    Modally    |    1st     |    Modally   

(cont.)

  |------------|
  |    View    |
->| Controller |
  |     2nd    |

Quando o primeiro controlador de visualização é apresentado de forma modal, a barra de navegação ainda responde aos toques.Quando o segundo (e quaisquer outros abaixo dessa linha (ou seja,3º, 4º...)) são apresentados a barra de navegação ainda está visível mas não responde aos toques do usuário.

Há um projeto de exemplo em GitHub isso ilustra o problema que estou tendo.

Qual é o meu problema

Gostaria de poder tocar na barra de navegação, independentemente de quantos controladores de visualização eu apresentei modalmente.

A maneira como estou abordando isso deveria funcionar?

Qual é a melhor maneira de realizar o que quero fazer?Existe uma maneira padrão de criar barras de navegação totalmente personalizadas (ou seja,vários botões, altura personalizada, etc)?

Foi útil?

Solução

Altere o estilo de apresentação modal para o segundo controlador de visualização no arquivo CVTFirstViewController.h de acordo com GitHub projeto.

Use este código

     secondViewController.modalPresentationStyle = UIModalPresentationCurrentContext;

em vez de

     secondViewController.modalPresentationStyle = UIModalPresentationCustom;
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top