1

私はデリゲートのUINavigationController(navigationController)を持つアプリケーションを構築しています。最初のビューはUITabViewController(tabView)で、UIViewControllerを持つUINavigationControllerと、いくつかの連絡先を示すUITableViewがあります。UINabigationController with UITabViewController

[self.window makeKeyAndVisible]; 
[self.window addSubview:[navigationController view]]; 
TabsView *tabsView = [[TabsView alloc] initWithNibName:nil bundle:nil]; 
[navigationController.view addSubview:[tabsView view]]; 
:私はappDelegateで次の操作を行い(toppest以上からNavController)テーブルビューでの接触

を超えるタップしたときに、私が何をしたいのか

には、連絡先の情報と新しいのViewControllerをプッシュすることです

tabsViewの最初のタブの負荷のすべての連絡先とUINavigationControllerを持っていると、誰かが1行をクリックしたとき、このような新しいビューをプッシュすることになっているContactsView.m:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    [table deselectRowAtIndexPath:indexPath animated:YES]; 
    ContactSecondView * varContactSecondView = [[ContactSecondView alloc] initWithNibName:nil bundle:nil]; 
    varContactSecondView.title = [[contactsArray objectAtIndex:indexPath.row] name]; 
    [self.navigationController pushViewController:varContactSecondView animated:YES]; 
    [varContactMapView release]; 
} 

行に触れても何も起こりません。

私は異なるファイルを持っています:UINavigationControllerでの委任< - UITabViewController < - UITableViewでのUINavigationControllerでのUIViewController;私は最初のナビゲーションコントローラにViewControllerをプッシュしたいと思います。

デリゲートのnavigationControllerにどのようにアクセスする必要がありますか?私はそれを正しくしていますか?

編集:これが手がかりを与える場合、ContactsView.mのself.navigationController.title = @"Contacts";を実行すると、トップバーのタイトルは変更されません。

ありがとうございます!

答えて

0

2つのことを。

  1. ナビゲーションコントローラにUITabBarControllerを埋め込むことは推奨されません。 UITabBarControllerにUINavigationControllerを埋め込んでも問題ありません。 UITabBarControllerUINavigationControllerに埋め込むのは「いいです」と思っていますが、iOSデザインの考え方に従うようにデザインを再考することをおすすめします。

  2. 代わりにあなたのappDelegate内のウィンドウにサブビューを追加するので、これまであなたは、ウィンドウのrootViewControllerプロパティすなわちに使用しているコントローラいる追加してみてください

    self.window.rootViewController = navigationController。

+0

こんにちは。まあ、問題は、タブが "コンテンツビュー"を小さくしていることです。つまり、uinavigationcontrollerの中にuitabviewを置くという考えです。これをどうやってやろうとしていますか? 2つ目のポイントはまだ問題を解決していませんでした:(ありがとう! – Ibai

+0

2番目のポイントは何の問題も解決しません。それは物事を行う正しい方法です。 – timthetoolman

+0

OK。 NavigationControllerを忘れる私がtabviewcontrollerのnavControllerを持っている場合。 uiviewcontrollerを押すときにタブバーを隠す機会はありますか?私は "hidesBottomBarWhenPushed"について読んだことがありますが、正確にどこに置いたのかわかりません。 – Ibai

0

私は間違っているかもしれませんが、あなたのナビゲーションコントローラであなたのView Controllerを設定する正しい方法を使わないと思います。

あなたが実行します。

[navigationController.view addSubview:[tabsView view]]; 

は、私が使用します。

[navigationController setViewControllers:[NSArray arrayWithObject:tabsView] animated:NO]; 
+0

私はあなたのコードを変更しましたが、それは私の問題を解決するものではありません。それはまだ新しいViewControllerを押していません:/ didSelectedRowAtIndexPathの何か?とにかくありがとう! – Ibai

関連する問題