При реализации перехода между двумя контроллерами представления, как изменить свойство целевого контроллера представления с помощью объекта перехода? В документации сказано, что это можно сделать внутри метода prepareForSegue:sender:. я пробовал но не получилось
Реализация перехода на iOS 5
Ответы (4)
Я не знаю, нужен ли вам еще ответ на этот вопрос, но это был такой одинокий пост, и, если я прав, он больше не подпадает под NDA. Если я ошибаюсь, пожалуйста, умерьте мой ответ до забвения, так что начнем: я только что закончил делать то, что вам нужно. Это код, который работает для меня:
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
if ([[segue identifier] isEqualToString:@"relevantSegueIdentifier"])
{
// [segue destinationViewController] is read-only, so in order to
// write to that view controller you'll have to locally instantiate
// it here:
ViewController *upcomingViewController = [segue destinationViewController];
// You now have a solid reference to the upcoming / destination view
// controller. Example use: Allocate and initialize some property of
// the destination view controller before you reach it and inject a
// reference to the current view controller into the upcoming one:
upcomingViewController.someProperty = [[SomePropertyClass alloc] initWithString:@"Whatever!"];
upcomingViewController.initialViewController = [segue sourceViewController];
// Or, equivalent, but more straightforward:
//upcomingViewController.initialViewController = self;
}
}
Это предполагает, что как someProperty, так и initialViewController являются синтезированными средствами доступа целевого контроллера представления. Надеюсь это поможет!
destinationViewController
не обновляются. Любой совет?
- person Francesco; 15.10.2011
Я написал учебник, в котором приведены примеры кода для передачи информации в новую сцену и обратно из сцены с использованием делегирования, поэтому ознакомьтесь с ним, он должен решить вашу проблему. Раскадровка для iOS 5: использование переходов, сцен и статического содержимого UITableViews
Я снял видео на эту тему. Я надеюсь, что это помогает. http://full.sc/17yKkZF
Что я использую в контроллере исходного кода:
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
UIViewController *upcomingViewController = [segue destinationViewController];
upcomingViewController.view.tag = [[segue identifier] hash];
}
А затем в контроллере представления назначения, который я использую (используйте, например, в viewDidAppear)
if(self.view.tag == [@"MySeqgueIdentifier" hash])
{
// Do something here...
}
Это круто, так как вам не нужно создавать никаких свойств и т. д., и все работает прямо из конструктора интерфейса.