タブバーコントローラーを備えたアプリケーションがあり、各ビューにはナビゲーションコントローラーが含まれています。私のメインウィンドウは次のようになります: 画像はこちらhttp://www.freeimagehosting.net/image.php?7bc867a594.png
そのままでも問題なく動作しますが、詳細ビューをナビゲーションコントローラーにプッシュすると問題が発生します。タブバーコントローラー(画像ではLatestと呼ばれるもの)に属するtableviewcontrollerのdidSelectRowAtIndexPathで、これを実行しています。
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
ArticleViewController *articleController = [[ArticleViewController alloc] initWithNibName:@"ArticleView" bundle:nil];
[self.navigationController pushViewController:articleController animated:YES];
[articleController release];
articleController = nil;
}
ArticleViewControllerには、さまざまなものを表示する必要があるため、独自のタブバーがあります。問題は、ArticleViewControllerをnavigationControllerにプッシュすると、ビューの下部に両方のタブバーが表示されることです。この問題を解決する方法はありますか?
前もって感謝します
何時間もかけてここに質問を投稿した後、この問題の解決策は、ArticleControllerのインスタンス化後に次の行を追加することであることがわかりました。
articleController.hidesBottomBarWhenPushed = YES;
非常に簡単な解決策:
destinationViewController.hidesBottomBarWhenPushed = YES;
あなたの場合:
articleController.hidesBottomBarWhenPushed = YES;
お役に立てれば!
ストーリーボードから親タブバーを簡単に非表示にできます。
Select viewcontroller> Attribute Inspector>checkHide Bottom Bar on Push ==
プッシュしているViewControllerに以下のコードを追加できます。
-(BOOL)hidesBottomBarWhenPushed
{
return YES;
}
これにより、プッシュされたView Controllerでのみタブバーが非表示になり、View Controllerをポップしても、残りのすべてのViewControllerでタブバーが再表示されたままになります。
Swiftバージョン(3.x以降)
override var hidesBottomBarWhenPushed: Bool {
get {
return navigationController?.topViewController == self
}
set {
super.hidesBottomBarWhenPushed = newValue
}
}
ありがとう
Xcodeのインターフェイスビルダーに移動し、属性インスペクターを開き、タブバーを表示したくないビューコントローラーの項目「プッシュ時に下部バーを非表示」をチェックします。それが動作します!!
非表示にするコントローラーでプロパティhidesBottomBarWhenPushed
を使用します。
非表示の場合、すべてのコントローラーはprepare for segue
に配置されます
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
segue.destination.hidesBottomBarWhenPushed = true
}
for Swift 3、以下のようにpushviewControllerコードの前にタブバーを再表示して同じコードを記述します
var frame = self.tabBarController?.tabBar.frame
frame?.Origin.y = self.view.frame.size.height - (frame?.size.height)!+112
UIView.animate(withDuration: 0.2, animations: {
self.tabBarController?.tabBar.frame = frame!
})
self.navigationController?.pushViewController(viewController, animated: true)
または、uが使用できるタブバーを再表示するために必要なものを使用します
viewController.hidesBottomBarWhenPushed = false