2012-05-01 41 views
8

問題は写真では分かりやすいです。 私はUINavigationControllerを使用して、ユーザー間でビューを切り替えることができます。pushViewControllerのときにナビゲーションバーが正しく表示されない

最初のビューはそうのような検索バーとテーブルビューが含まれていますenter image description here

二つ目は、私は検索バー、ナビゲーションをクリックすると、セルの情報が表示

ている基本的な図であり、コントローラが非表示になり、検索バーが上部に表示されます。今

、私はセルをクリックした場合、それは第二のビューになりますが、ナビゲーションバーが最初に以下のように隠されている:

enter image description here

そして、それは自動的にそのように表示されます:

enter image description here

がどのように誰もが知っています..私は次のビューコントローラをプッシュする前に、ナビゲーションバーを表示するようなものをいくつか試してみましたが、それは非常に醜いです連絡先アプリケーションのように、2番目のビューに直接ナビゲーションバーを表示しますか?

[UPDATE]:コード

AppDelegate.mあなたが必要な場合は

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
{  
    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; 
    FirstViewController *viewController1 = [[FirstViewController alloc] initWithNibName:@"FirstViewController" bundle:nil]; 
    SecondViewController *viewController2 = [[SecondViewController alloc] initWithNibName:@"SecondViewController" bundle:nil]; 

    viewController1.managedObjectContext = [self managedObjectContext]; 
    viewController2.managedObjectContext = [self managedObjectContext]; 
    viewController1.viewController2 = viewController2; 

    UINavigationController *navigationcontroller1 = [[UINavigationController alloc] initWithRootViewController:viewController1]; 
    [navigationcontroller1.navigationBar setTintColor:[UIColor lightGrayColor]]; 
    UINavigationController *navigationcontroller2 = [[UINavigationController alloc] initWithRootViewController:viewController2]; 
    [navigationcontroller2.navigationBar setTintColor:[UIColor lightGrayColor]]; 

    self.tabBarController = [[UITabBarController alloc] init]; 
    self.tabBarController.viewControllers = [NSArray arrayWithObjects:navigationcontroller1, navigationcontroller2, nil]; 

    self.window.rootViewController = self.tabBarController; 
    [self.window makeKeyAndVisible]; 

    return YES; 
} 

FirstView.m

- (void) searchBarTextDidBeginEditing:(UISearchBar *)theSearchBar { 
    [self.navigationController setNavigationBarHidden:YES animated:YES]; 
} 

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    if (!noResultsToDisplay) { 
     PinDetailsViewController *pinDetailsViewController = [[PinDetailsViewController alloc] initWithNibName:@"PinDetailsViewController" bundle:nil]; 
     NSManagedObject *managedObject = [fetchedResultsController objectAtIndexPath:indexPath]; 
     Pin *pin = (Pin *) managedObject; 

     [self.navigationItem setTitle:@"Pins"]; 
     [self.navigationController pushViewController:pinDetailsViewController animated:YES]; 
     [pinDetailsViewController updateWithPin:pin]; 
    } 
} 

(私はnavigationcontroller2について話しています)他のものは、ただ尋ねるが、私はそれがすべてそこにあると思う。

+0

いくつかのコードを投稿してください。それ以外の場合は、問題がどこにあるかを確認することは非常に困難です。 – MishieMoo

答えて

14

各ビューコントローラーでこのコードを使用してください。

- (void) viewWillAppear:(BOOL)animated 
{ 

    [self.navigationController setNavigationBarHidden:NO animated:animated]; 

} 


- (void) viewWillDisappear:(BOOL)animated 
{ 
    [self.navigationController setNavigationBarHidden:YES animated:animated]; 

} 
+2

私はアプリケーションの全体のレイアウトを変更したので、もう使用しませんでしたが、それは魅力的に機能します。それが他の人を助けることを望みます。ありがとうございました。 –

+0

2015年12月の頭痛から私を助けます!ありがとうございました。 – oyalhi

1

新しいビューコントローラをプッシュする前に、ナビゲーションバー再表示する必要があります

[self.navigationController setNavigationBarHidden:NO animated:YES];

+0

あなたが私の投稿をもう一度読むと、私はすでにそれを試したことに気付くでしょう。それは動作しますが、それは醜いです。連絡先アプリケーションと同じ動作が必要です。 –

1

を私は私のナビゲーションバーの位置と同様の問題がありました。鉱山は、ステータスバーの背後に動いていた、と私は手動でナビゲーションバーの枠を設定することで、問題を修正:

-(void)adjustNavBarOrigin 
{ 
    CGRect r = self.navigationController.navigationBar.frame; 
    r.origin = CGPointMake(0, 20); // 20 is the height of the status bar 
    self.navigationController.navigationBar.frame = r; 
} 

私はviewWillAppearを含む多くの場所でこのメソッドを呼び出す必要がありました:とdidRotateFromInterfaceOrientation :,が、それは働きました治療:

+0

私はそれを試しましたが、問題を解決しません。 –

+0

それは完全に動作します。ありがとう。多くの時間を節約しました – msmq

0

UINavigationBarを非表示にすると、プロパティが時々妨害される可能性があります。 hiddenの代わりにalphaプロパティを使用してみてください。

関連する問題