Раскадровка - задание делегатов
Перед раскадрой я смог установить делегаты и источники данных, просто перетащив розетку в класс. С раскадровки я не могу перетащить розетку в другой контроллер; нет адресата, который будет отвечать на него.
Если я нажму на объект контроллера представления, я могу увидеть владельца класса внизу, но как только я выберу другой контроллер представления, содержащий выход, старый выбор исчез, поэтому я не могу подключить два.
Является ли этот способ Apple сказать, что мы должны только подключать их программно?
Ответы
Ответ 1
Правильно. Установите делегат или другие данные в свой метод prepareForSegue:sender:
. Вот пример:
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
// Check the segue identifier
if ([segue.identifier isEqualToString:@"showDetail"])
{
// Get a reference to your custom view controller
CustomViewController *customViewController = segue.destinationViewController;
// Set your custom view controller delegate
customViewController.delegate = self;
}
}
Ответ 2
Если ваш раскадровки segue destination View Controller является UIViewController, тогда ответ @Marco прав. Но если ваш диспетчер View View - это UINavigationViewController, вы должны получить UIViewController из UINavigationViewController:
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
// Check the segue identifier
if ([segue.identifier isEqualToString:@"chooseCategoryType"])
{
// Get a reference of your custom view controller if your segue connection is an UIViewController
// CustomViewController *customViewController = segue.destinationViewController;
// Get a reference of your custom view controller from navigation view controller if your segue connection is an UINavigationViewController
CustomViewController *customViewController = [[[segue destinationViewController] viewControllers] objectAtIndex:0];
// Set your custom view controller delegate
customViewController.delegate = self;
}
}