1

我正在尝试在不使用 segue 的情况下导航到场景。我正在使用的代码如下所示:

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];
    }
}

但我不想使用segues。谁能告诉我如何为场景设置代表?

谢谢

4

3 回答 3

2
UIStoryboard * storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil];
DetailViewController * controller = (DetailViewController *)[storyboard instantiateViewControllerWithIdentifier:@"DetailView"];
controller.delegate = self;
[self presentViewController:controller animated:YES completion:nil];
于 2013-03-08T08:39:34.650 回答
0

您可以为正在加载的场景设置委托。

您的“destinationViewController”将有一个方法“ViewWillAppear”。在那里,您可以将委托设置为自我。

于 2013-03-08T08:36:51.087 回答
0

因为您已经有了对新控制器的引用,所以您不需要prepareForSegue:sender:在以下行之后实现该方法:

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

只需添加:

[controller setDelegate:self];
于 2013-03-08T08:37:02.740 回答