2

次のようなUITabBarControllerを作成してnavigationControllerをプッシュしましたが、tabbarcontrollerがNULLであるため、タブバー項目などのタイトルを設定できません。self.tabBarControllerがNULLです

私が間違っている場所を教えてください。 tabBarControllerためdocumentation

UITabBarController *tabBarController = [[UITabBarController alloc] init]; 
     LoggedInFeedNavigationController *lvc = [[LoggedInFeedNavigationController alloc] initWithAccount:account]; 
     [tabBarController setViewControllers:[NSArray arrayWithObject:lvc]]; 
     [tabBarController setSelectedIndex:0]; 
     [self presentModalViewController:tabBarController animated:YES]; 
     [tabBarController release]; 
     [lvc release]; 
+0

は、どのようにそれにアクセスしようとしていますか? – joshpaul

+0

LoggedInFeedNavigationController、self.tabBarControllerにあります。 –

答えて

6

なしタブバーが存在しないか、 受信機は、モーダルビューあり、この プロパティがnilであると、私は、次の

を参照してください。

コメントでは、LoggedInFeedNavigationControllerの中からself.tabBarControllerを呼び出していると言いますが、正しく動作するはずです。しかし、あなたはモーダルでタブバーを表示していますが、UITabBarControllerの内部にモーダルビューとしてドキュメントがある場合でも、それは問題です。

+0

この問題を解決するにはどうすればよいですか? –

+1

tabBarControllerに絶対にアクセスする必要がある場合は、 'LogifiedInFeedNavigationController'の中でプロパティ' @property(nonatomic、retain)UITabBarController * modalTabBarController;を作成し、それを提示する前に設定することを検討してください。私はこれをテストしなかったので、循環参照(deallocメソッドにブレークポイントを入れる)をしないことを確認してください。もしそうであれば、tabBarControllerがあなたのコントローラの長さを保っていることを保証できるかどうかを決定するためにそれを変更してください。 – Joe

+0

私が望むもう一つの方法は、プロトコルを作成して、タブバーを作成し、 'LIFNC'をそれに準拠させ、delegateコールバックから適切に作成したtabBarControllerを管理することです。 – Joe

0

あなたがそれで終わっていないときにあなたのタブバーコントローラを解放するように見えます。あなたはそれを一度初期化し、それをdeallocメソッドのようにしたときにだけ解放したいと思っています。

0

ジョーは完全に正しいです。これは、カスタムセグも同様です。 (例:SWRevealViewControllerなど)

これは、Joeの回答とリンゴのドキュメントに基づいて動作させるために行ったものです。その後のviewDidLoadでYourTabBarViewController.mファイルに以下を追加します

@property (nonatomic, retain) UITabBarController * myTabBarController; 

:YourTabBarViewController.hファイルで 次を追加

self.myTabBarController = self; 
self.myTabBarController.delegate = self;