2013-09-28 2 views
1

Мне нужно получить доступ к значению переменной в ClassA.m после загрузки представления ClassB.m, но кажется, что при переключении представления из ClassA в ClassB переменные из класса A будут уничтожены. Каков наилучший способ сохранить эту переменную в ClassA? В Java это было бы довольно легко, в виде статической переменной. Однако я не знаю такой концепции в Objective-C. Если вы рекомендуете использовать переменную «extern», я пробовал это, и этот тип переменной также, казалось, был уничтожен после переключения вида? Возможно, я внедряю неправильно, но что вы думаете? Как сохранить значение переменной во втором представлении после отклонения первого вида?Как сохранить значение переменной после переключения контроллеров?

ответ

2

Вы можете создать свойство в новом представлении viewcontroller и передать текущую переменную viewcontroller в new. см. exp.

DetailsViewController *detailsviewcontroller = [[DetailsViewController alloc] initWithNibName:@"EventDetailsViewController" bundle:nil]; 
eventdetailsviewcontroller.event = localvar; 
[self.navigationController pushViewController:detailsviewcontroller animated:YES]; 
1

Забудьте о статических переменных на данный момент. Идея состоит в том, что вы хотите, чтобы объект сохранял ссылку на эти переменные , независимо от того, с каким номером зрения включена функция. Вот для чего mediator pattern. В основном вы хотите иметь контроллер контроллеров (сделайте его singelton), и этот контроллер может хранить ссылку на все переменные, которые вы хотите сохранить, в то время как взгляды приходят и уходят.

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

Я дал аналогичный ответ here.

-2

Вы можете использовать статическую переменную в Objective-C. Это пример в файле Test.m

static NSMutableDictionary* single = nil; 

@implementation Test 

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