-1

Я не новичок, но я не могу понять эту глупую проблему. У меня есть два контроллера просмотра. Пример Родитель и Ребенок являются классами. Родитель - базовый класс и ребенок - это подкласс. Но я не могу унаследовать любые данные, кроме этих bool.Значение переменной Boolean Variable не изменяется. RejectControllerAnimated from Child to Parent in Storyboard

В родительском классе я использую один BOOL переменной, которую я декларировать в Parent.h

@property (nonatomic, assign) BOOL isChange; 

После этого я синтеза этой переменной и инициализации по умолчанию ложных в viewDidLoad

isChange = FALSE; 

сейчас , Я использую эту переменную в Ребенок Класс и я Измените значение на True

Parent.isChange = TRUE; 

До этого изменения я alloc и initРодитель класса в ребенка класса.

Parent = [[Parent alloc] init]; 

Но вопрос, когда я Отклонить этот класс и перейти к Родителю класса isChange значения не изменится.

[self dismissViewControllerAnimated:YES completion:nil]; 

Я проверил в Родитель класса

- (void)viewDidAppear:(BOOL)animated { 
    [super viewDidAppear:animated]; 
    if (isChange == TRUE) { // Here isChange Return NO. 
     [self refresh:nil]; 
    } 
} 

Я не могу понять свою ошибку.

+0

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

+0

У вас есть ответ на этот вопрос? –

+0

Я немного смущен. Является ли «Child» наследованием от «Parent» или это всего лишь два случайных имени класса (т. Е. Вы можете показать больше своего файла '.h'? В экземпляре' Child', где вы устанавливаете 'Parent.isChanged = TRUE'? – Firo

ответ

1

Вы не можете получить значение TRUE, потому что в детском классе allocinit. Он создает новый Instance. Лучше объявить эту логическую переменную глобально. Я приведу вам пример.

Объявите переменную в Common.h

@property (nonatomic) BOOL isChange; 

Определить в Common.m

- (void)checkIsAnyChange:(BOOL)isChange { 
    _isChange = isChange; 
    [self updateChangeCount:UIDocumentChangeDone]; 
} 

И теперь использовать с этой Boolean в Родитель и ребенок класса для проверки.

0

[[Parent alloc] init] создает новый экземпляр Parent. Если вы измените значение некоторого свойства в этом экземпляре, нет оснований ожидать, что это значение также изменится в другом экземпляре Parent.

Если вы хотите проверить, что происходит, напечатайте адрес родителя при выполнении задания и значение self, где вы проверите isChange. Если они не совпадают, тогда вы имеете дело с отдельными объектами.

+0

is это возможно без метода prepareForSegue? –

+0

Я не понимаю вашего комментария. Что ваш исходный вопрос имеет отношение к segues? –

+0

Я проверил y наш ответ http://stackoverflow.com/a/14568595/3378413 Здесь, я думаю, вы используете prepareForSegue для передачи данных. –

Смежные вопросы