#ios #objective-c #properties #viewcontroller
#iOS #objective-c #свойства #viewcontroller
Вопрос:
Мой контроллер просмотра теряет свои свойства после вызова. Итак, BaseTransitionController имеет (присваивает) значение int, которое изменяется по мере перемещения пользователей по приложению. Я хочу получить это значение int в другом контроллере представления, поэтому я инициализирую его в этом (ViewController B). Self.indexSelectedLogin является свойством ViewController B. Но оба RootController.indexSelected и self.indexSelectedLogin оказываются имеющими значение 0, когда они должны иметь значение 1-5. Спасибо
@interface BaseTransitionController : UIViewController
@property (assign) int indexSelected;
------------------------------------------------------------------
View Controller B
BaseTransitionController *rootController = [[BaseTransitionController alloc] init];
self.indexSelectedLogin = rootController.indexSelected;
Комментарии:
1. Вероятно, это потому, что вы создаете совершенно новый
BaseTransitionController
вместо ссылки на существующий экземпляр.2. @rmaddy Что вы подразумеваете под существующим экземпляром? Я использовал BaseTransitionController, поэтому я могу наследовать от него несколько классов и получать те же свойства, что и UIViewController, плюс свойство indexSelected.
3. Вам нужно получить доступ к
indexSelected
некоторым существующимBaseTransitionController
, правильно? Тот, у которого уже есть некоторое значение для егоindexSelected
свойства. В крошечном фрагменте кода, который вы показываете в своем вопросе, вы создаете новоеBaseTransitionController
и получаете его свойство unsetindexSelected
.
Ответ №1:
Для этого вы должны сохранить старое значение int и передать в новую переменную int, как показано ниже:-
@interface BaseTransitionController : UIViewController
@property (assign) int indexSelected;
//Assuming here indexSelected =5;
------------------------------------------------------------------
View Controller B
@property (nonatomic,strong) BaseTransitionController *rootController
//Now in this before alloc init just check the instance of BaseTransitionController
//if instance exist then you will get the retain value
self.indexSelectedLogin = self.rootController.indexSelected;
if(!self.rootController)
{
self.rootController = [[BaseTransitionController alloc] init];
}
Таким образом, вы можете сохранить значение и соответствующим образом установить его в своем классе.