0

そこで、アプリのデリゲートで UINavigationController を作成し、RootViewController インスタンスで初期化しました。UINavigationController は、アプリの UIWindow のサブビューとして追加されました。(それが重要な場合、私の RVC にはカスタム初期化子があります。)

    - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
              _window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];

              _viewController = [[RootViewController alloc] initWithPath:@"/private/var/mobile/"];
              _viewController.title = @"mobile";

              UINavigationController *nav1 = [[[UINavigationController alloc] initWithRootViewController:_viewController] autorelease];

              //This part I'm not sure about as well
              [_window addSubview:nav1.view];
              [_window makeKeyAndVisible];

    return 0;
    }

その情報を使用して、次のように、RVC の別のインスタンスを UITableView からナビゲーション スタックにプッシュしようとしています。

    - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
              //I've tried it without the if statement as well
              if(indexPath.section == 0){
                      RootViewController *detailView = [[RootViewController alloc] initWithPath:launchDirectory];
                      detailView.title = relativeDirectory;
                      [self.navigationController pushViewController:detailView animated:YES];

別の注意として、私の RVC テーブルビューのデータソースとデリゲートは「self」に設定されています。

私の質問は、テーブルの行を選択してもビューが変わらないのはなぜですか? テーブルが新しいテーブルにプッシュされず、行を選択した後も同じセルの内容が表示されます。つまり、何も起こらない…

助けてくれてありがとう。

4

1 に答える 1

2

あなたのナビゲーション コントローラーはおそらくnilです。これは、あなた-autoreleaseが少し多すぎることを意味します。通常、Navigation Controller はデリゲートの dealloc メソッドが呼び出されるまで存続するため、そこで解放します。

于 2012-07-08T19:57:03.433 に答える