Контроллер FirstView автоматически вызывает второй контроллер представления в viewdidAppear

Я использую 2 представления в контроллере навигации на панели вкладок. При этом контроллер первого представления в навигации должен автоматически вызывать второй контроллер представления без отображения контроллера первого представления (путем нажатия pushviewcontroller на viewdidAppear).

Проблема заключается в том, что я нажимаю на панель вкладок в первый раз, когда она переходит на контроллер второго представления без правильного отображения первого представления. но когда я снова нажимаю панель вкладок, отображается первый вид со стилем перехода (popviewcontroller).

Может ли кто-нибудь подсказать мне, что у меня пошло не так?

заранее спасибо

С уважением, сатанинский


person sathish kumar    schedule 04.10.2010    source источник


Ответы (3)


Если вы используете initWithNibName для создания контроллеров представления, используйте событие viewDidLoad вместо viewDidAppear.

person Jorge    schedule 04.10.2010
comment
Я использую программно для вызова контроллеров представления - person sathish kumar; 04.10.2010
comment
Используйте - (void) loadView вместо viewDidLoad - person Jorge; 04.10.2010
comment
дело в том, что каждый раз он должен обновляться, поэтому только я сохраняю первый контроллер представления в качестве контроллера инициализации - person sathish kumar; 04.10.2010
comment
Кажется, что нажатие на вкладки всегда вызывает poptorootviewcontroller. Вы можете использовать - (BOOL) tabBarController: (UITabBarController *) tabBarController shouldSelectViewController: (UIViewController *) метод делегата viewController UITabBarController и обрабатывать поведение отсюда, возможно, снова нажмите ваш второй контроллер, прежде чем вернуть YES из этого метода. Я не знаю, как остановить poptoroot, но думаю, здесь можно обойтись. - person Jorge; 04.10.2010

просто используйте вызов контроллера второго представления в - (void) ViewwillAppear: (BOOL) Animated, тогда это не вызовет никаких проблем

person GhostRider    schedule 04.10.2010

Почему вы хотите это сделать?

На самом деле добавьте второе представление как подпредставление или, если вы действительно должны поместить его в viewWillAppear:(BOOL)animated, но вызывать его каждый раз действительно неэффективно. Но опять же, зачем вам проталкивать контроллер представления над другим контроллером представления ?! Почему бы вам просто не сделать второй контроллер представления корневым контроллером представления?

person Thomas Clayson    schedule 04.10.2010
comment
Я использую календари в своем приложении. проблема в том, что мне приходится каждый раз обновлять страницу, получая текущее значение, вставляя NSUserDefault и снова вызывая корневой контроллер, чтобы показать его. поэтому сначала рассматривайте контроллер как контроллер инициализации. а второй контроллер показывает управление календарем - person sathish kumar; 04.10.2010