故事板 - 设置代表

时间:2012-01-24 04:51:25

标签: ios xcode xcode4 delegates uistoryboard

在故事板之前,我只需将插座拖到课堂上即可设置代理和数据源。有了故事板,我无法将插座拖到另一个视图控制器;没有目的地会响应它。

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

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

2 个答案:

答案 0 :(得分:28)

正确。在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;
    }
}

答案 1 :(得分: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;
    }
}