2011-09-16 9 views
0

[OK]を、ので、私は次のようしている。ここでカスタムタブバーとナビゲーションコントローラとの問題

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
{  
    MainViewController * tabBarController = [[MainViewController alloc] init]; 
    [self.window addSubview:tabBarController.view]; 
    [self.window makeKeyAndVisible]; 
    [tabBarController release]; 

    [application registerForRemoteNotificationTypes:UIRemoteNotificationTypeBadge| 
    UIRemoteNotificationTypeAlert| 
    UIRemoteNotificationTypeSound]; 

    return YES; 

} 

は、MainViewControllerはUITabBarControllerの単なるサブクラスであり、かつMainViewControllerののviewDidLoad内で私が持っている:

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 

NSMutableArray *localControllersArray = [[NSMutableArray alloc] initWithCapacity:3]; 

MapViewController * map = [[MapViewController alloc] init]; 
    [localControllersArray addObject:map]; 

    //[localNavigationController release]; 
    [map release]; 


    ListViewController * voteSpot = [[ListViewController alloc] initWithTabBar]; 
    [localControllersArray addObject:voteSpot]; 

    //[localNavigationController release]; 
    [voteSpot release]; 


    ProfileViewController * profile = [[ProfileViewController alloc] initWithTabBar]; 
    [localControllersArray addObject:profile]; 

    //[localNavigationController release]; 
    [profile release]; 


    self.viewControllers = localControllersArray; 
    [localControllersArray release]; 
} 
私が見ることができるもの

、今はただです:

enter image description here

なぜそれは白い画面ですか?ここで

は私initWithTabBarの例です:

-(id) initWithTabBar { 
    if ([self init]) { 
     [email protected]"Map"; 
    } 
    return self; 
} 

私が欲しいまさにん一瞬下のタブバー(真ん中の欠落)を、無視...私は混乱していて、各タブに関連付けられているのViewControllerであります実際にMapViewControllerにはMapViewがありますが、何も持っていません。私はそれがクラッシュする任意のタブをクリックすると(このプログラムは、信号受信:EXC_BAD_ACCESS)をint retVal = UIApplicationMain(...)

UPDATE:あなたはそれをデバッグしたい場合は、私がgit hubところで、サンプルコードをアップロードした

答えて

0

あなたはコントローラをTabBarControllers viewControllersプロパティに追加する必要があります。ように:

self.viewControllers = [NSArray arrayWithObjects:map, voteSpot, profile, nil]; 

編集:申し訳ありませんが、私はあなたがすでにそれを持っていたことがわかりませんでした。しかし、実際の問題に応じて、上記のスニペットは実際にあなたの問題を解決することができます。

いくつかのこと:

  1. 私はあなたのlocalControllersArrayの作成を見ることができません。それは自動リリースされているかどうか?
  2. エラーは、メモリに問題がある(つまり、解放された変数にアクセスしている)ことを示しています。ビルド・スキームでNSZombieEnabled = YESを設定すると、問題の原因となっている変数を正確に見つけることができます。
  3. 私は個人的には、アプリケーションデリゲートでビューコントローラを作成してそこに割り当てたいと思っています。しかし、viewDidLoadでは動作しないはずの理由はありません(私が知っている)。

編集2: プロジェクトを見た後、私はそれを得ることができたし、実行していると、このように見えるapplicationDidFinishLaunchingWithOptions方法を変更して、タブのビューを示す:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
{ 
    BaseViewController * tabBarController = [[BaseViewController alloc] init]; 

    NSMutableArray *localControllersArray = [[NSMutableArray alloc] initWithCapacity:3]; 

    //MapViewController * map = [[MapViewController alloc] init]; 
    //UINavigationController* mapNavController = [[[UINavigationController alloc] 
    //            initWithRootViewController:map] autorelease]; 
    //[map release]; 
    //[localControllersArray addObject:mapNavController]; 


    ProfileViewController * profile = [[ProfileViewController alloc] init]; 
    [localControllersArray addObject:profile]; 
    [profile release]; 

    tabBarController.viewControllers = localControllersArray; 
    [localControllersArray release]; 

    self.window.rootViewController = tabBarController; 
    [self.window makeKeyAndVisible]; 
    [tabBarController release]; 
    return YES; 
} 
+0

あなたすることはできません上記の私のコードを参照してください?もし私がそれを持っていなければ、私はそれぞれのタブバーのタイトルを持っていません。 – adit

+0

私の謝罪。私は私の答えを更新しました。 –

+0

サンプルプロジェクトを作成してGitHubにアップロードしました。私を助けてくれますか?リンクは投稿 – adit

関連する問題