прошивкой, установить делегата для сцены без использования подводки


Я пытаюсь перейти к сцене, не используя сегмент. Код, который я использую, выглядит следующим образом:

UIStoryboard * storyboard = [UIStoryboard storyboardWithName:storyboardName bundle:nil];
MyViewController * controller = (MyViewController *)[storyboard instantiateViewControllerWithIdentifier:viewControllerID];
[self presentViewController:controller animated:YES completion:nil];

Моя проблема заключается в установке делегата для этой сцены. Обычно я делал следующее:

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    // Check the segue identifier
    if ([[segue identifier] isEqualToString:@"showDetail"])
    {
        [[segue destinationViewController] setDelegate:self];
    }
}
Но я не хочу использовать сегменты. Может ли кто-нибудь сказать мне, как я мог бы установить делегата для сцены?

Спасибо

3 2

3 ответа:

UIStoryboard * storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil];
DetailViewController * controller = (DetailViewController *)[storyboard instantiateViewControllerWithIdentifier:@"DetailView"];
controller.delegate = self;
[self presentViewController:controller animated:YES completion:nil];

Можно задать делегат для загружаемой сцены.

Ваш " destinationViewController "будет иметь метод"ViewWillAppear". Там вы можете настроить делегата на себя.

Поскольку у вас уже есть ссылка на новый контроллер, вам не нужно реализовывать метод prepareForSegue:sender: после строки:

MyViewController * controller = (MyViewController *)[storyboard instantiateViewControllerWithIdentifier:viewControllerID];

Просто добавьте:

[controller setDelegate:self];