繁体   English   中英

带情节提要的IBAction子视图

[英]IBAction Subview with Storyboard

我正在尝试使用情节提要添加子视图。 它已正确显示,但是子视图中没有任何按钮( IBAction )可以正常工作,即使使用空代码,单击该应用程序也始终会崩溃。

TableViewController.m

...
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    // Load SubView    
    SubviewViewController *subview = [self.storyboard instantiateViewControllerWithIdentifier:@"SubviewViewController"];
    [self.view addSubview:subview.view];
}
...

SubviewViewController.m

- (IBAction)btnCloseSubview:(id)sender
{
    // Crashes the app when clicked, even empty as it's. 
}

您不应该只是将另一个视图控制器的视图添加到您的视图中,它可能会让您遇到麻烦。 当我尝试过时,它有时会起作用,有时却不会。 正确的方法是将控制器添加为TableViewController的子视图控制器:

SubviewViewController *subview = [self.storyboard instantiateViewControllerWithIdentifier:@"SubviewViewController"];
[self addChildViewController: subview];
[subview didMoveToParentViewController:self];
[self.view addSubview:subview.view];

您可能还需要设置子视图的框架(subview.view.frame = self.view.bounds,如果您希望它的大小相同)。

或者,您可以在xib文件中创建视图而不是视图控制器,并将其添加为视图的子视图。 在这种情况下,您可以将文件的xib所有者设置为TableViewController,并将该按钮的方法放在TableViewController中。

查看UIContainerView,它处理子视图控制器。 您将需要在父视图控制器和子视图控制器之间处理您自己的通信,但除此之外,只要您的子视图具有在其中设置的正确插座和操作,它将像您需要它一样用于子视图。故事板及其视图控制器。

查看有关容器视图的更多深入信息

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM