【问题标题】:iOS, Set delegate for scene without using segueiOS,在不使用 segue 的情况下为场景设置委托
【发布时间】:2013-02-23 17:43:18
【问题描述】:

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

谢谢

【问题讨论】:

    标签: ios delegates storyboard segue scene


    【解决方案1】:
    UIStoryboard * storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil];
    DetailViewController * controller = (DetailViewController *)[storyboard instantiateViewControllerWithIdentifier:@"DetailView"];
    controller.delegate = self;
    [self presentViewController:controller animated:YES completion:nil];
    

    【讨论】:

      【解决方案2】:

      您可以为正在加载的场景设置代理。

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

      【讨论】:

        【解决方案3】:

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

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

        只需添加:

        [controller setDelegate:self];
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2014-03-12
          • 2020-01-30
          • 2020-01-30
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-11-14
          相关资源
          最近更新 更多