2011-12-10 4 views
0

私は最初からタブバーベースのアプリケーションを作成しようとしていましたが、いくつか問題があります。基本的に私は私のAppDelegate.h、AppDelegate.mとMainView.xibを持っています。私が持っている.hファイルでは:私の.mでUITabBarControllerがnullですか?

@interface AppDelegate : UIResponder <UIApplicationDelegate, UITabBarControllerDelegate> 

@property (strong, nonatomic) UIWindow *window; 
@property (strong, nonatomic) IBOutlet UITabBarController *tabBarController; 

@end 

私が持っている:

@synthesize window = _window; 
@synthesize tabBarController = _tabBarController; 

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

    // Override point for customization after application launch. 
    self.window.rootViewController = self.tabBarController; 
    [self.window makeKeyAndVisible]; 
    return YES; 
} 

そして、私のXIBファイルで私はAppdelegateのクラスとしての私のファイルの所有者を持っていると私は私の口を持っていますそこからTab Bar Controllerで接続しました。問題は、私のコントローラがnullを返すため、rootViewControllerとして設定されていないことです。私のアプリの設定に欠けているステップ/アイデアは何ですか?前もって感謝します!

EDIT FIXED:空のアプリケーションから開始していたので、メインのnibファイルのベース名が設定されていなかったので、ロードしようとしていたペン先に設定するだけでした。

答えて

0

私は空のアプリケーションから始めていたので、メインのnibファイルのベース名は設定されていませんでしたので、ロードしようとしていたペン先に設定するだけでした。

0

タブバーコントローラのタブからアクセスするビューコントローラを作成する必要があります。次に、それらをタブバーのviewControllersプロパティに割り当てる必要があります。あなたは、ウィンドウのrootViewControllerとしてタブバーを設定する前にこれを行うことができます:

MyViewController1 *vc1 = [[MyViewController1 alloc] init]; 
MyViewController2 *vc2 = [[MyViewController2 alloc] init]; 
NSArray *controllers = [NSArray arrayWithObjects:vc1, vc2, nil]; 
self.tabBarController.viewControllers = controllers; 

私はそれが役に立てば幸い!

+0

返信いただきありがとうございますが、すでにXIBファイルにコントローラが設定されています。私はそれをあなたが提案した方法で試しましたが、私はまだエラーが発生します。 "アプリケーションはアプリケーションの起動の終わりにルートビューコントローラを持つことが期待されます。"どのような理由で私がコンセントに接続しているビューコントローラはnullです –

+0

タブバーコントローラを 'rootViewController'として設定した行は保持しましたか?あなたはそれを取り除くべきではありません。 –

+0

はい、私はラインを維持しました。 –

0

通常、appDelegateオブジェクトはUIResponderのサブクラスではなく、NSObjectのサブクラスです。

xibファイルの最初のレスポンダにTabBarインスタンスをフックしていますか?最初のレスポンダはプロキシオブジェクトだけであり、クラスの型をそれに設定するとオブジェクトがインスタンス化されないため、これが機能しないことを考慮に入れてください。

代わりに、xBibファイルにAppDelegateオブジェクトを作成し、TabBarをそのファイルにフックします。

希望します。

+0

私はそれをNSObjectに変更した後、オブジェクトを追加し、それを私の代理人のクラスにして、それをxibファイルに追加しました。アウトレットを引っ掛けてもまだ動作しません。 –

+0

うまく動作していたサンプルコードをダウンロードしたので、私は一歩足りなくてはなりません。私はその後、xibを削除し、私の自己それをやろうとしたと私は同じエラーを取得 –

関連する問題