цвет фона не меняется для UILabel - PullRequest
1 голос
/ 03 января 2012

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

[self.navigationController popViewControllerAnimated:YES];
[self.navigationController pushViewController:self.navigationController.parentViewController
                                     animated:YES];

1 Ответ

0 голосов
/ 04 января 2012

Чтобы расширить ваш код и, возможно, лучше понять то, что я пытался прокомментировать выше.

UINavigationController* navigationController = [self navigationController];

UIViewController* parentViewControllerForNavigationController = [navigationController parentViewController];

Затем в своем коде вы добавляете родительский ViewController к дочернему ViewController.

[navigationController pushViewController:parentViewControllerForNavigationController animated:YES];

Что независимо от того, где вы выполняете, это вызовет некоторые серьезные проблемы.Я думаю, что вы не совсем понимаете, как работает UINavigationController.Простое объяснение состоит в том, что на самом деле это просто итератор для списка (или очереди, если вы предпочитаете) UIViewControllers (или подклассов UIViewControllers).По сути, способ добавления родительского контроллера представления в контроллер навигации вызывает репликацию контроллера навигации.

Код:

[self.navigationController popViewControllerAnimated:YES];

Просто удаляет последний элемент из спискаон вызовет методы release и dealloc для UIViewController, который находится в конце стека UINavigationController.Что заставит приложение анимировать обратно к предыдущему представлению (так как аргумент animate - «ДА»), вам вообще не нужно вставлять другое представление в стек навигации, что, как кажется, вы пытаетесь сделать.

Однако, если вы, например, пытались выполнить некоторые манипуляции с навигацией, такие как: У вас есть три контроллера представления, UIViewController A, B и C. Контроллер корневого представления - это A. Вы нажимаете B на контроллере навигации, а затемвыполнить некоторую функцию в B и сделать так, чтобы контроллер представления C был помещен в стек навигации, но когда вы вернетесь обратно в представление C, вы захотите получить представление с представлением A, а не с представлением B, вы можете манипулировать возвращаемым массивом, вызывая [self navigationController] viewControllers] и удаление второго последнего объекта и изменение размера массива, а затем вызов [self navigationController] setViewControllers: "resizedArray"], но я хотел бы, чтобы эта функция выполнялась в функции viewDidAppear в реализации контроллера представления C.

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