2016-05-15 1 views
0

ナビゲーションコントローラのナビゲーションバーに追加されるuisegementcontrolとuibarbuttonがあります。しかし、私が次のビューに進むと、私はそれらを取り除きたい。私はいくつかのアプローチを試みましたが、何もそれらを取り除いているようです。 1つのアプローチは、viewWillDisappearを使用し、segementcontrolとbarボタンremovedFromSuperViewを使用していました。もう1つは、次のシーンにプッシュするメソッドからremoveFromSuperViewを呼び出すことでした。何も働いていないようです。私は実際にこれに本当に長い間固執してきました!ナビゲーションバーの項目が表示されなくなっても削除されない

また、セグメンテーションコントロールとバーボタンを持つビューコントローラ "X"は、presentViewControllerを通じて表示されます。 Xは、他のView Controllerをプッシュします。ここで

はsegement制御のためのコード

NSArray *headers = @[@"Tracks", @"Playlists"]; 
self.savedMusic = [[UISegmentedControl alloc] initWithItems:headers]; 
CGSize size = self.view.frame.size; 
CGRect segFrame = CGRectMake(80, 5, size.width - 140, 35); 
self.savedMusic.backgroundColor = [UIColor blackColor]; 
self.savedMusic.frame = segFrame; 
self.savedMusic.tag =1; 

[self.savedMusic setTitle:@"Tracks" 
     forSegmentAtIndex:0]; 
[self.savedMusic setTitle:@"Playlists" 
     forSegmentAtIndex:1]; 

[self.savedMusic addTarget:self 
        action:@selector(whatToDisplay) 
      forControlEvents:UIControlEventValueChanged]; 
self.savedMusic.selectedSegmentIndex = 0; 

[self.navigationController.navigationBar addSubview:self.savedMusic]; 

ここではviewWillDisapear

[super viewWillDisappear:animated]; 
self.navigationController.navigationBar.barStyle = UIBarStyleDefault; 
self.navigationItem.leftBarButtonItem = nil; 
[self.savedMusic removeFromSuperview]; 

ためのコードであり、ここで新しいビュー

に切り替わりメソッドのコードです
 PlaylistTracksTableViewController *vc = [[PlaylistTracksTableViewController alloc] init]; 

    [self.savedMusic removeFromSuperview]; 
    [[self.navigationController.navigationBar viewWithTag:1] removeFromSuperview]; 
    self.navigationItem.leftBarButtonItem = nil; 
    [self.navigationController pushViewController:vc animated:YES]; 

答えて

1

問題は、あなたがやっていることは、どのようにしてコントナビゲーションバーのnts。 self.navigationController.navigationBarと話をしないでください。代わりに、各ビューコントローラはそれ自身のself.navigationItemを設定する必要があり、ランタイムはそれを使用して、そのビューコントローラのナビゲーションバーを設定します。

+0

あなたは私にuisegementcontrolのためにこれを行う方法の例を教えてもらえますか? – madgrand

+0

'self.navigationItem.titleView = mySegmentedControl' - しかし、それは正常に動作し、完全に合法ですが、セグメント化されたコントロールがナビゲーションバーにある必要がある理由も尋ねる必要があります。ビューコントローラのビューの一番上にいないのはなぜですか? – matt

+0

ちょっとおかげさまで提案しました。私はちょうどtitleviewに変更を加えましたが、それはまだ同じ問題を抱えていますので、私はそれをあなたが示唆したようにビューの一番上に追加します。私は個人的にはnav barで涼しかったと思っていましたが、うまく動作しないようです – madgrand

関連する問題