2

ストーリーボードを使用してサブビューを追加しようとしています。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. 
}
4

2 に答える 2

5

そのようなビューに別のView Controllerのビューを追加するだけではいけません。問題が発生する可能性があります。私がそれを試してみると、うまくいくこともあればうまくいかないこともあります。適切な方法は、コントローラを 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 に配置します。

于 2013-05-14T03:20:14.017 に答える
2

UIContainerView を調べてください。サブビュー コントローラーを処理します。親と子のView Controller間の独自の通信を処理する必要がありますが、サブビューに適切なアウトレットとアクションが設定されている限り、それ以外はサブビューに必要なように機能しますビューコントローラーを備えたストーリーボード。

コンテナー ビューの詳細については、こちらをご覧ください。

于 2013-05-14T03:33:42.687 に答える