Obj-C, Navigation Controller с Tab Controller я их неправильно использую? - PullRequest
1 голос
/ 11 ноября 2011

Когда я впервые настраивал свое приложение, у меня были некоторые проблемы с работой одного контроллера навигации.

У меня есть несколько экранов за каждым элементом вкладки.Я думаю, что проблема, которую я получал, состояла в том, что контроллеры представления показывались бы в неправильных вкладках при переключении между ними.Меня не беспокоит сохранение последнего используемого контроллера представления в каждой вкладке, на самом деле я скрываю панель вкладок, чтобы остановить это сейчас.

Так что на данный момент у меня есть файлы контроллера навигации для каждой из моих вкладок,Я назначил их в IB, в главном окне.

И я использую их вот так ...

CategorySelTableViewController *nextController = 
          [[[CategorySelTableViewController alloc] initWithNibName:
          @"CategorySelTableView" bundle:nil] autorelease];
nextController.hidesBottomBarWhenPushed = YES;

MyAppDelegate *delegate = (MyAppDelegate *)[[UIApplication sharedApplication] 
         delegate];

[delegate.billsndepsNavController pushViewController:nextController animated:YES];

Однако у меня есть некоторые утечки.

Я могуне освобождает моего делегата, это вызывает ошибку.

Мой коллега предлагает мне просто использовать self.navigationcontroller.

Но это большое изменение для меня, я бы хотелточно знать, если я делаю это неправильно, прежде чем вносить изменения?

1 Ответ

0 голосов
/ 11 ноября 2011

Когда контроллер представления помещается в стек, у него есть два способа доступа к контроллеру навигации:

  • Использование self.navigationController.
  • Доступ к ivar контроллера навигации вделегат:
    [UIApplication sharedApplication].delegate.navigationController

Оба эквивалентны, но первый короче, поэтому его можно использовать чаще.Нет смысла переходить с одного на другой.Единственная причина для дополнительной типизации - когда вы не находитесь в выдвинутом контроллере представления, например: контроллере представления, используемом в независимом компоненте GUI, или объекте, который не является контроллером представления.

Делегат не должен быть освобожден, потому что он существует в течение всей жизни приложения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...