У меня есть статический TableViewController с двумя статическими ячейками: аэропорт отправления и аэропорт прибытия. Оба переходят к другому TableViewController, который позволяет пользователю выбирать аэропорт и определяет исходный TVC как делегат для передачи объекта обратно. Чего я не знаю, как сделать, так это определить, какое свойство устанавливается при выборе аэропорта; аэропорт отправления или прибытия, когда выбор передается обратно через делегата. То, что я начал реализовывать, — это свойство в AirportListTVC, которое устанавливается с помощью метода prepareForSegue, а затем передается обратно делегату, когда сделан выбор. Есть ли способ лучше?
Как перейти к одному и тому же ViewController через несколько переходов из одного и того же TableViewController
Ответы (1)
Передача информации в новый UIViewController, как правило, сложна, и использование автоматических переходов в Interface Builder на самом деле не позволяет легко передавать информацию. В основном я бы предложил два способа (похоже, вы используете один):
1) Используйте переходы построителя интерфейса и используйте prepareForSegue для передачи любой информации, которая у вас есть, в новый UIViewController.
2) Назовите UIViewController в построителе интерфейсов (идентификатор), а затем представьте его самостоятельно, используя instantiateViewControllerWithIdentifier
, следующим образом — используя в этом случае контроллер навигации для представления:
UIStoryboard *storyboard = [viewController storyboard];
MyViewController *vc = [storyboard instantiateViewControllerWithIdentifier:@"MyVC"];
[vc configureWithMyData:myData];
[navigationController pushViewController:vc animated:YES];
Это случай выбора, который вам подходит. Очевидно, вы также можете создавать контроллеры полностью в коде.
Здесь есть некоторые вещи, которые следует учитывать - например, эти два метода заставляют новый UIViewController быть фактически инициализированным/viewDidLoad в разных точках (я могу расширить это, если это поможет).