23

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

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

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

4

2 回答 2

29

正确的。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;
    }
}
于 2012-01-25T14:44:23.317 回答
0

如果您的故事板 segue 目标 View Controller 是 UIViewController ,那么@Marco 的答案是正确的。但是,如果您的目标 View Controller 是 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;
    }
}
于 2016-08-24T08:08:53.780 回答