Там - это магия раскадровки для достижения этой цели.Это известно как раскручивающийся переход.В файле .h вы реализуете любые методы стиля "target action", которые вам нужны, для сколь угодно большого количества переходов.Для модальных, это обычно два (отменить и сохранить).Таким образом, в моем файле Ah я бы добавил:
// A.h file
- (IBAction)myCancelUnwindSegueCallback:(UIStoryboardSegue *)segue;
- (IBAction)mySaveUnwindSegueCallback:(UIStoryboardSegue *)segue;
Теперь, в вашей раскадровке, если у вас есть переход от A к B. Теперь вы можете сделать перетаскивание элемента управления стилем "target action" из вашей отмены /сохранить кнопки в B в зеленый значок «Выход» в нижней части контроллера B в вашей раскадровке.Когда вы сделаете это, Xcode выберет два метода, которые мы создали (поскольку они находятся в заголовочном файле A и имеют правильную подпись (например, IBAction и UIStoryboardSegue *.), А B - это назначение перехода от A). Итак,там у вас есть это.У вас есть магия раскадровки, которую вы искали!
В реализации двух обратных вызовов у вас будет что-то вроде:
// A.m file
- (IBAction)myCancelUnwindSegueCallback:(UIStoryboardSegue *)segue {
UIViewController *modalGoingAway = segue.sourceViewController;
// Do something (like get data) from modalGoingAway if you need to...
}
- (IBAction)mySaveUnwindSegueCallback:(UIStoryboardSegue *)segue {
UIViewController *modalGoingAway = segue.sourceViewController;
// Do something (like get data) from modalGoingAway if you need to...
}
Наконец, если этот подход отвечает вашим потребностям, отлично,Вы сделалиОднако я все еще подключаю весь шаблон проектирования делегата / источника данных протокола, если «при отмене» или «при сохранении» я хочу выполнить некоторые операции над частными свойствами B, прежде чем передать управление A, чтобы удалить B из иерархии представления.