Представление модального представления иногда скрывает панель навигации

На самом деле, нет необходимости проверять какие-либо случаи «вручную». Вы можете просто запустить следующий алгоритм:

  1. Итерация по заданной последовательности. Начните с пустого стека.

  2. Если текущий символ является открывающей скобкой, просто поместите его в стек.

  3. Если это закрывающая скобка, убедитесь, что стек не пустой, а верхний элемент шага - это подходящая открывающая скобка (то есть она соответствует этой). Если это не так, сообщите об ошибке. В противном случае вытолкните верхний элемент из стека.

  4. В конце концов, последовательность правильная, если стек пуст.

Почему это правильно? Вот набросок доказательства: если этот алгоритм сообщил, что последовательность исправлена, он нашел подходящую пару всех скобок. Таким образом, последовательность действительно верна по определению. Если он сообщил об ошибке:

  1. Если в конце стопка не была пустой, баланс открывающих и закрывающих скобок не равен нулю. Таким образом, это не правильная последовательность.

  2. Если стек был пуст, когда нам нужно было вытолкнуть элемент, баланс снова отключается.

  3. Если в стеке был неправильный элемент, пара «неправильных» скобок должна соответствовать друг другу. Это означает, что последовательность неверна.

Я показал, что:

  • Если алгоритм сообщил, что последовательность верна, она верна.

  • Если алгоритм сообщил, что последовательность неверна, она неверна (обратите внимание, что я не использую тот факт, что нет других случаев, кроме тех, которые упомянуты в вашем вопросе).

Эти два момента означают, что этот алгоритм работает для всех возможных входов.

18
задан Corey Floyd 3 June 2009 в 13:36
поделиться

2 ответа

Нет, я тоже столкнулся с этим. Проблема в том, что когда вы представляете контроллер модального представления с классом на основе UIViewController, он не расширяет панель навигации вызывающего контроллера навигации на модальное окно. Модальное представление охватывает весь экран. В итоге для решения проблемы я создал UINavigationController и поместил на него класс, основанный на UIViewController, а затем применил PresentModalViewController к экземпляру контроллера навигации.

например:

UIViewController *vc = [[UIViewController alloc] init];
UINavigationController *cntrol = [[UINavigationController alloc] initWithRootViewController:vc];
[self presentModalViewController:cntrol animated:YES];
[cntrol release];

Это позволило мне иметь панель навигации на

Я не уверен, поможет ли это в вашем конкретном случае, единственное, что я бы предложил, - это воспроизвести поведение модального окна с помощью анимации UIA, которая останавливается на 44 пикселя ниже верхней части телефона. При этом исходная панель навигации останется видимой.

38
ответ дан 21 October 2019 в 05:29
поделиться

Возможно, это очевидно, но как только вы закончите работу с модальным представлением и захотите его закрыть, вы должны сделать что-то вроде этого в своем модальном vc:

[parentController dismissModalViewControllerAnimated: YES];

Где parentController - это ссылка на виртуальный компьютер, из которого вы представляете модальное представление.

1
ответ дан 21 October 2019 в 05:29
поделиться
Другие вопросы по тегам:

Похожие вопросы: