在故事板之前,我只需将插座拖到课堂上即可设置代理和数据源。有了故事板,我无法将插座拖到另一个视图控制器;没有目的地会响应它。
如果我点击视图控制器对象,我可以在底部看到类所有者,但是一旦我选择了另一个包含插座的视图控制器,旧的选择就消失了,所以我无法连接两个
这是Apple的说法,我们只应该以编程方式连接它们吗?
答案 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;
}
}