1

私はiOS開発に非常に慣れていないので、ここの専門家が私の問題を手伝ってくれるとありがたいです。現時点では、私のアプリケーションは非常に基本的で、何もしません。既存のビューにタブバーを追加しようとする前は、問題なく機能していました。何が欠けているのかわかりませんが、シミュレーションを実行しても何も表示されません。皆さんが問題をよりよく理解できるように、アプリケーションの構造を説明するために最善を尽くします。

現在、アプリケーションには次のものがあります...

  1. FeedList:UINavigationController内に埋め込まれたUITableViewController。
  2. FeedCell:FeedList用に作成されたUITableViewCell。
  3. FeedItemDetail:UIScrollViewを含むUIViewController。FeedListのセルをタップすると、この画面が表示されます。

以下は、AppDelegate.hとAppDelegate.mのコードです。シミュレーション画面に何も表示されない理由を教えていただければ幸いです。ありがとう!

    //AppDelegate.h
    #import <UIKit/UIKit.h>

    #import "FeedList.h"

    @interface AppDelegate : NSObject <UIApplicationDelegate>
    {
        UIWindow *window;
        FeedList *feedList;
        UITabBarController *tabBarController;
    }

    @property (nonatomic, retain) IBOutlet UIWindow *window;
    @property (nonatomic, retain) FeedList *feedList;
    @property (nonatomic, retain) UITabBarController *tabBarController;

    - (void)customizeAppearance;

    @end

    //AppDelegate.m
    #import "AppDelegate.h"

    @implementation AppDelegate

    @synthesize window, feedList, tabBarController;

    // Entry point
    - (void)applicationDidFinishLaunching:(UIApplication *)application
    {
        tabBarController = [[UITabBarController alloc] init];
        feedList = [[FeedList alloc] init];
        UINavigationController *nav = [[UINavigationController alloc] initWithRootViewController:feedList];
        tabBarController.viewControllers = [NSArray arrayWithObject:nav];
        [window addSubview:tabBarController.view];
        [window makeKeyAndVisible];
    }

更新(問題は解決しました)

私は、行を追加した後、tabBarController.viewControllers = [NSArray arrayWithObject:nav];物事が混乱し始めることに気づきました。Appleのドキュメントを確認した後、このプロパティの値が実行時に変更された場合、タブバーコントローラは新しいビューコントローラをインストールする前に古いビューコントローラをすべて削除するためです。したがって、新しいタブバーコントローラーをルートビューコントローラーとして設定する必要があります。

4

1 に答える 1

0

ダスティンのコメントに同意します。新しく始める場合は、ストーリーボードを使用する必要があります。私があなたのメソッドで間違っている、またはとにかく典型的なものとは異なるのは、次のようにself.windowのrootViewControllerを設定するサブビューとしてtabBarControllerを追加しないことです。

// Entry point
    - (void)applicationDidFinishLaunching:(UIApplication *)application
    {
        tabBarController = [[UITabBarController alloc] init];
        feedList = [[FeedList alloc] init];
        UINavigationController *nav = [[UINavigationController alloc] initWithRootViewController:feedList];
        tabBarController.viewControllers = [NSArray arrayWithObject:nav];
        //******* This is my correction *******
        window.rootViewController = tabBarController;
        //*******                       *******
        [window makeKeyAndVisible];
    }

もちろん、テーブルビューが正しく設定されているかどうかを提供した情報から判断する方法はないため、テーブルが表示される保証はありません。

于 2012-08-02T17:02:07.500 に答える