0

タブ付きアプリケーションを(XCodeで)作成しようとしています。このアプリケーションは、タブの1つに「FourthViewController」を表示するために使用されるUINavigationControllerを格納し、その「FourthViewController」内でボタンが押されると、新しい「 SlideViewController」がUINavigationControllerにプッシュされます(おい!)。UINavigationControllerがFourthViewControllerまたはSlideViewController内から新しいViewControllerをプッシュする方法を理解するのに問題があります。私がしていることをより明確にするために、フローチャートといくつかのコードを含めています。(そして、記録のために、それはレストランのためのアプリです、それが「shrimpquesadilla.jpg」のような名前がある理由です。)

以下はフローチャートへのリンクです、私はそれを投稿に埋め込むのに十分な評判がありません:http: //i.imgur.com/lZVdn.jpg

DemoTabbedAppDelegate.h

    @interface DemoTabbedAppDelegate : UIResponder <UIApplicationDelegate,
                                     UITabBarControllerDelegate>
    {
        UINavigationController *globalUINavigationController;
    }
    ... //other syntheses
    @synthesize globalUINavigationController;

DemoTabbedAppDelegate.m

    - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:
                    (NSDictionary *)LaunchOptions
    {
        self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
        ... /creating the first three tab ViewControllers
        globalUINavigationController = [[UINavigationController alloc] initWithNibName:
                    @"DemoTabbedFourthViewController" bundle:nil];
        ... //setting last tab title and image
        UIViewController *viewController4 = [[DemoTabbedFourthViewController alloc]
                    initWithNibName:@"DemoTabbedFourthViewController" bundle:nil];
        [globalUINavigationController pushViewController:viewController4 animated:YES];
        ... //Starting the TabBarController and making it the rootViewController
    }

DemoTabbedFourthView.m

    //initialization and all that junk
    - (void)goToSlide:(UIImage *)image
    {
        DemoTabbedSlideViewController *d = [[DemoTabbedSlideViewController alloc]
                                            initWithImage:image];
        [globalUINavigationController pushViewController:d animated:YES];
        NSLog(@"test");
        //what goes here to call push on the UINavigationController?
    }

    - (void)clickQuesadilla:(id)sender
    {
        [self goToSlide:[UIImage imageNamed:@"shrimpquesadilla.jpg"]];
    }

DemoTabbedSlideViewController

    - (id)initWithImage:(UIImage *)image
    {
        self = [super init];
        imageView = [[UIImageView alloc] initWithImage:image]; 
        NSLog(@"test 2");
        return self;
    }

さらに詳しい情報が必要な場合はお知らせください。可能な限り明確にするよう努めました。お時間をいただきありがとうございます。

4

2 に答える 2

2

問題は、ナビゲーションコントローラーの初期化方法にあると思います。ナビゲーションコントローラをインスタンス化するときは、initWithRootViewController:の代わりにを使用してみてくださいinitWithNibName:

また、DemoTabbedFourthViewの.m内から、プロパティにアクセスしてそこからnavigationController呼び出すことにより、ナビゲーションコントローラーへのポインターを取得できます。pushViewController:animated:

[self.navigationController pushViewController:d animated:YES];
于 2012-07-25T20:43:29.643 に答える
0

このタイプのアプリケーションは、実際にはストーリーボードのポスターチャイルドです。それらを使用したくない理由はありますか?

これらすべてのビューの間にセグエを含むストーリーボードを簡単にレイアウトし、フレームワークにビュー間のこのナビゲーションのすべてを処理させることができます。

于 2012-07-25T20:46:32.270 に答える