В segue есть два контроллера вида: sourceViewController
и destinationViewController
.Когда UIKit выполняет переход, он отправляет сообщение prepareForSegue:sender:
в исходный VC.Вы можете переопределить этот метод в своем подклассе контроллера представления для передачи данных в целевой VC.
Например, предположим, что у вас есть контроллер основного представления с табличным представлением фильмов, и когда пользователь щелкает строку вВ табличном представлении вы хотите перейти к контроллеру подробного представления для фильма.
@implementation MasterViewController
...
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
DetailViewController *detailVC = segue.destinationViewController;
NSIndexPath *selectedPath = [self.tableView indexPathForSelectedRow];
detailVC.movie = [self movieForIndexPath:selectedPath];
}
Это объясняется в Представлении раскадровки Interface Builder видео с WWDC 2011.
Стоит также отметить, что когда источником перехода является ячейка табличного представления или вспомогательная кнопка ячейки табличного представления, аргумент sender
prepareForSegue:sender:
является ячейкой табличного представления.