簡體   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