iOS,不使用segue设置场景委托

时间:2013-03-08 08:25:39

标签: ios delegates storyboard segue scene

我试图在不使用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。谁能告诉我如何为场景设置代表?

由于

3 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:0)

你可以为你正在加载的场景设置代表。

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

答案 2 :(得分:0)

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

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

只需添加:

[controller setDelegate:self];