Я изучаю разработку для iOS и при создании простого приложения, которое загружает данные из базы данных и показывает это как табличное представление, у меня есть некоторые проблемы, которые я пока не понимаю. Классы мастера - детали контроллеров были созданы мной, а не шаблоном XCode, если это имеет значение.Каков правильный способ передачи данных с главного на контроллер представления деталей?
попытке передать данные из контроллера мастер Tableview к деталям контроллера. Данные просты, как несколько строк. Для этой цели я использую segue. В
prepareForSegue
методе я делаю следующее:if ([segue.identifier isEqualToString: @"DetailsSegue"]) { DetailsViewController* dvc = (DetailsViewController*)segue.destinationViewController; NSInteger selectedRow =[self.tableView indexPathForSelectedRow].row; dvc.nameLabel.text = [NSString stringWithFormat:@"%@", [[self.entitiesArray objectAtIndex:selectedRow name]]; ... }
Проблема здесь состоит в том, что
dvc.nameLabel
являетсяnil
. И я думаю, что возможно потому, что контроллер еще не был полностью создан. Ну, указательdvc
неnil
, но я не вижу записи в моем методеinit
, поэтому моя идея, что он не был инициализирован.я решил создать переменный экземпляр DetailsViewController и
prepareForSegue
установить его:dvc->name = [NSString stringWithFormat:@"%@", [[self.entitiesArray objectAtIndex: selectedRow] name]];
, а затем я установил
nameLabel
свойство вviewDidLoad
методыИ это на самом деле работает! Поэтому, я думаю, я не смог бы установить переменную экземпляра униализированного экземпляра. Но я сделал. Так что случилось? И я чувствую, что это не так, как люди делают это, , чтобы иметь еще одну переменную, которая держит то же самое, кажется избыточным.
Так что правильный способ передачи переменного (в моем случае NSString) с помощью SEGUE на другой контроллер?
Спасибо ребят за помощь
Возможный дубликат [Передача данных между контроллерами представлений] (http://stackoverflow.com/questions/5210535/passing-data-between-view-controllers) –