Эта проблема мучила меня некоторое время, но я думаю, что наконец понял, что не так;Я думаю Мне просто нужно решение сейчас ...
Вот фон приложения.Существует около 6 различных вкладок, которые пользователь может использовать, отображаемых с помощью UITabBarController.Каждая из этих вкладок является пользовательским подклассом UIViewController внутри UINavigationController.Все 6 вкладок настроены внутри nib-файла (MainWindows.xib).
Мне нужно иметь возможность скрывать и отображать разные вкладки в зависимости от того, вошел пользователь в систему или нет, и от того, кто вошел в нее.в.У меня это работает так:
При запуске приложения (application: didFinishLaunching: ...) шесть вкладок сохраняются в NSMutableArray, который у меня есть.Это прекрасно работает ...
Когда пользователь входит в систему или выходит из нее, я получаю доступ к вкладкам, которые он может использовать из NSMutableArray, и добавляю их в UITabBarController следующим образом:
[tabBar setViewControllers: [NSArray arrayWithObjects:
[viewControllers objectAtIndex:1],
[viewControllers objectAtIndex:5],
nil] animated:YES];
viewControllers - это NSMutableArray, который я сделал ранее с 6 вкладками.Выполнение NSLog на нем сразу после его создания дает следующее:
2012-02-24 11:45:57.690 [redacted][26155:207] (
"<UINavigationController: 0x8249db0>",
"<UINavigationController: 0x841a3f0>",
"<UINavigationController: 0x824be40>",
"<UINavigationController: 0x824dbd0>",
"<UINavigationController: 0x824e810>",
"<UINavigationController: 0x841dfb0>"
)
Однако, когда я печатаю значение self.parentViewController из последнего пользовательского контроллера представления, который находится внутри последнегоконтроллер навигации в этом списке, я получаю это:
2012-02-24 11:54:51.247 [REDACTED][26306:207] <UIMoreNavigationController: 0x826ab00>
2012-02-24 11:54:51.248 [REDACTED][26306:207] <UITabBarController: 0x8257c50>
Первая строка - это self.parentViewController, вторая - self.parentViewController.parentViewController
Похоже, что иерархия:
UITabBarController -> UIMoreNavigationController -> MyCustomController
Однако, когда я печатаю [self.parentViewController.parentViewController viewControllers]
Я все еще получаю:
(
"<UINavigationController: 0x8259770>",
"<UINavigationController: 0x825aa60>",
"<UINavigationController: 0x825bec0>",
"<UINavigationController: 0x82612c0>",
"<UINavigationController: 0x8261ec0>",
"<UINavigationController: 0x8263b00>"
)
* 1030UIMoreNavigationController ушел?Кто-нибудь может объяснить, что происходит?Я сталкиваюсь с проблемами, связанными с этим, потому что я использую этот массив, однако последний UINavigationController не является объектом, на который он претендует.
У меня есть предчувствие, что яблоко возится с объектами за кулисами, чтобысделать это проще для программиста ...
Я постараюсь ответить на любые ваши вопросы о том, как структурирован код, как я использую различные объекты или тестировать некоторый код.Заранее большое спасибо.