1

親ビューで UITableView と標準の UIView を切り替えられるようにしたいと考えています。基本的に、ロード時に情報のログを表示する UITableView があります。ユーザーがタップすると、標準のUIViewであるグラフビューに遷移するウィンドウのヘッダーにセグメントコントロールが必要です。

問題の UIViewController には、RootViewController スタックからプッシュできる機能が必要です。

私は多くのことを試しましたが、これを機能させることができないようです。これを行う方法について、コード例や提案はありますか?

4

3 に答える 3

0

ナビゲーションコントローラーに表示するためにUIViewControllerを変更する必要はありません。セグメント化されたコントローラーは、次のコードを実行するメソッドを呼び出す必要があります。

UIViewController *myViewController = [[UIViewController alloc] init];
[self.navigationController pushViewController:myViewController animated:YES];
[myViewController release];

例へのリンクはありませんが、必要に応じてさらに質問に答えることができます。

-描いた

于 2010-01-16T23:12:10.903 に答える
0

実際には、最初に思ったほど難しくはありません。基本的に、空のビューと 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];
    }
}
于 2010-10-21T21:10:42.187 に答える