実際には、最初に思ったほど難しくはありません。基本的に、空のビューと NavController を上に持つ ParentViewController がある場合。セグメント コントロールを NavController の中央ビューに配置します。
次に、セグメント コントロールが変更されたときに ViewController ビューを切り替えるだけです。あなたがしなければならない唯一のことは、現在のビューへのポインターを保持し、新しいビューをparentVCに追加する前にそれを削除することです. 以下のコード:
- (void)showView
{
if (_currentView != nil)
[_currentView removeFromSuperview];
if (segmentControl.selectedSegmentIndex == 0)
{
if (_graph == nil)
_graph = [[DrawGraphViewController alloc] initWithNibName:@"DrawGraphViewController" bundle:[NSBundle mainBundle]];
self.navigationItem.rightBarButtonItem = nil;
_currentView = _graph.view;
[contentView addSubview:_graph.view];
[_graph reloadGraph];
}
else if (segmentControl.selectedSegmentIndex == 1)
{
if (_log == nil)
_log = [[LogTableViewController alloc] initWithNibName:@"LogTableView" bundle:[NSBundle mainBundle]];
self.navigationItem.rightBarButtonItem = self.editButtonItem;
_currentView = _log.view;
[contentView addSubview:_log.view];
[_log loadData];
}
else {
if (_export == nil)
_export = [[ExportViewController alloc] initWithNibName:@"ExportView" bundle:[NSBundle mainBundle]];
_currentView = _export.view;
[contentView addSubview:_export.view];
}
}