0

同様の質問をたくさん読んだことがありますが、ビューが機能しない理由がわかりません..これに4時間費やしたので、助けを求める時が来たと思いました.

私の主な VC コードは、didSelectRowAtIndexPath でこのメソッドを使用した UITableView です。

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
    NSLog(@"%s", __FUNCTION__);
    svc = [[SubViewController alloc] initWithNibName:@"SubView" bundle:nil];
    //UINavigationController *nc = [[UINavigationController alloc] init];

    switch (indexPath.section) {
    case 0 :
            switch (indexPath.row) {
            case 0 :
                    NSLog(@"0");
                    svc.label.text  = @"Item";
                    break;

                case 1:
                    NSLog(@"1");
                    svc.label.text  = @"Category";
                    break;
            }
            break;
    NSLog(@"2");        
    case 1 : svc.title  = @"Second Cell"; break;
    case 2 : svc.title = @"Third Cell"; break;
    case 3 : svc.title = @"Image"; break;
    case 4 : svc.title = @"Notes"; break;
            NSLog(@"3");
            break;
    }
    NSLog(@"4");
    //svc = [[SubViewController alloc] init];

    NSLog(@"svc is %@", svc);
    UINavigationController *nc = [[UINavigationController alloc] initWithNibName:@"SubView" bundle:nil];
                        //initWithRootViewController:svc];

    [nc pushViewController:svc animated:YES];

    NSLog(@"self.navigation is as %@",nc);
    NSLog(@"5");
    [tableView deselectRowAtIndexPath:indexPath animated:NO];
}

あなたも私が試したことを見ることができます。出力ログには次のように表示されます。

2013-02-12 13:32:22.858 CollapsableTableView[35122:c07] -[ViewController tableView:didSelectRowAtIndexPath:]
2013-02-12 13:32:22.859 CollapsableTableView[35122:c07] -[SubViewController initWithNibName:bundle:]
2013-02-12 13:32:22.860 CollapsableTableView[35122:c07] wtf
2013-02-12 13:32:22.860 CollapsableTableView[35122:c07] 0
2013-02-12 13:32:22.860 CollapsableTableView[35122:c07] 4
2013-02-12 13:32:22.861 CollapsableTableView[35122:c07] svc is <SubViewController: 0x10363070>
2013-02-12 13:32:22.863 CollapsableTableView[35122:c07] self.navigation is as <UINavigationController: 0x101608b0>
2013-02-12 13:32:22.863 CollapsableTableView[35122:c07] 5

したがって、サブビューは見つかりましたが、ロードされていません..どんなアイデアでも評価されます。ありがとう

アップデート。コメントを受け取った後 (THANKS:)) 私のコードは次のようになりましたが、まだ灘...

svc = [[SubViewController alloc] initWithNibName:@"SubView" bundle:nil];


UINavigationController *nc = self.navigationController;


switch (indexPath.section) {
case 0 :
        switch (indexPath.row) {
        case 0 :
                NSLog(@"0");
                svc.label.text  = @"Item";
                break;

            case 1:
                NSLog(@"1");
                svc.label.text  = @"Category";
                break;
        }
        break;
NSLog(@"2");        
case 1 : svc.title  = @"Second Cell"; break;
case 2 : svc.title = @"Third Cell"; break;
case 3 : svc.title = @"Image"; break;
case 4 : svc.title = @"Notes"; break;
        NSLog(@"3");
        break;
}
NSLog(@"4");
//svc = [[SubViewController alloc] init];

NSLog(@"svc is %@", svc);

 [nc pushViewController:svc animated:YES];
//pushViewController:svc animated:YES];

NSLog(@"self.navigation is %@",nc);
NSLog(@"5");
4

2 に答える 2

1

このビューを作成する前に、ナビゲーションコントローラー(APP DELEGATE)などを追加します。次に、このビューをナビゲーションコントローラーのルートにします。

ついに。self.navigationController pushViewController:(UIViewController*) animated:(BOOL) これでうまくいくと思います。ナビゲーションコントローラーを追加する方法がわからない場合は、ナビゲーションコントローラーのルートビューコントローラーでinitを検索してください。

ただし、ここで新しいビューコントローラを追加することがポイントである場合は、メインビューにサブビューとして追加するのを忘れただけです。

于 2013-02-12T19:23:12.847 に答える
1
UINavigationController *nc = [[UINavigationController alloc] initWithNibName:@"SubView" bundle:nil];

それを次のように置き換えます。

UINavigationController *nc = self.navigationController;

あなたは真新しい を作成していUINavigationControllerます。あなたが持っているものを使用してそれにプッシュする必要があります。

ノート

新しいものを作っていたとしてもUINavigationController、View Controller のペン先ではそうしません。コメントしたコードを使用してrootViewController、フレッシュに a を設定しますUINavigationController

于 2013-02-12T18:41:22.120 に答える