【问题标题】:Storyboard - setting delegates故事板 - 设置代表
【发布时间】:2012-02-17 10:07:41
【问题描述】:

在故事板出现之前,我可以通过将一个出口拖到一个类中来设置委托和数据源。使用故事板,我无法将插座拖到另一个视图控制器;没有目的地会响应它。

如果我点击一个视图控制器对象,我可以在底部看到类所有者,但是一旦我选择另一个包含插座的视图控制器,旧的选择就消失了,所以我无法连接两者.

这是 Apple 的说法,我们应该只以编程方式连接它们吗?

【问题讨论】:

    标签: ios xcode xcode4 delegates uistoryboard


    【解决方案1】:

    如果您的故事板 segue 目标视图控制器是 UIViewController,那么@Marco 的答案是正确的。但是如果你的目标视图控制器是 UINavigationViewController 那么你必须从 UINavigationViewController 获取 UIViewController :

    - (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's delegate
            customViewController.delegate = self;
        }
    }
    

    【讨论】:

      【解决方案2】:

      正确。在 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's delegate
              customViewController.delegate = self;
          }
      }
      

      【讨论】:

      • 如何为 UISplitViewController 设置委托?我正在查看的示例代码通过像这样获取窗口的根视图控制器来处理它:UISplitViewController *splitViewController = (UISplitViewController *)self.window.rootViewController; 虽然在技术上是正确的,并且它有效,但与设置委托和视图控制器的好方法相比,它似乎是一种非常肮脏的方法在故事板之前...
      猜你喜欢
      • 1970-01-01
      • 2012-09-13
      • 2015-06-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-03-30
      • 2021-04-20
      • 1970-01-01
      相关资源
      最近更新 更多