UINavigationControllerで「戻る」ボタンを非表示にする方法を知っていますか?また、どのようにそれを表示するか、しかしそれはそれを隠すことに非常に似ていると思います...
メールを表示しているときに「編集」を押すと、iPhoneのメールアプリケーションと同じように。
コントローラーでこれを使用して、答えを見つけました:
[self.navigationItem setHidesBackButton:YES animated:YES];
そしてそれを復元するには:
[self.navigationItem setHidesBackButton:NO animated:YES];
-
[UPDATE]
Swift 3.0:
self.navigationItem.setHidesBackButton(true, animated:true)
このコードを追加
[self.navigationItem setHidesBackButton:YES];
(既に推奨されている方法を使用して)戻るボタンを削除することに加えて、iOS 7以降では、ユーザーが左から右へのスワイプジェスチャで前の画面に「ポップ」できることを忘れないでください。
これを無効にするには(適切な場合)、次を実装します(たとえば、viewDidLoadで)。
if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 7.0)
self.navigationController.interactivePopGestureRecognizer.enabled = NO;
既存の答えを明確にするために:hidesBackButton
プロパティは正しい答えですが、多くの答えではself
が何を指しているのか明確ではありません。基本的に、UINavigationController
にプッシュされようとしている(またはプッシュされたばかりの)View Controllerでself.navigationItem.hidesBackButton = YES
を設定する必要があります。
つまり、UINavigationController
という名前のmyNavController
があるとします。その上に新しいビューを配置したいのですが、そうすると、[戻る]ボタンが表示されなくなります。私は次のようなことができます:
UIViewController *newVC = [[UIViewController alloc] init];
//presumably would do some stuff here to set up the new view controller
newVC.navigationItem.hidesBackButton = YES;
[myNavController pushViewController:newVC animated:YES];
コードが終了すると、newVC
で制御されるビューが表示され、戻るボタンが表示されなくなります。
戻るボタンを条件付きで非表示および表示するには、次のコードを使用できます。
-(void)viewDidAppear:(BOOL)animated
{
if ([tempAry count]==0)
{
[self.navigationItem setHidesBackButton:YES animated:YES];
}
else
{
[self.navigationItem setHidesBackButton:NO animated:YES];
}
[super viewDidAppear:animated];
}
注:場合によっては、次のようにviewWillAppearの代わりにviewDidAppearメソッドに配置する必要があります。次のクラスの配列を前のクラスに更新してから、上記のように次のクラスに条件をチェックする場合。
Swift iOS(以下を使用しました)
// hide back button
self.navigationItem.setHidesBackButton(true, animated: false)
// pgrm mark ----- ------
// hide the back button for this view controller
override func setEditing(editing: Bool, animated: Bool) {
super.setEditing(editing, animated: animated)
self.navigationItem.setHidesBackButton(editing, animated: animated)
}// end setEditing
何らかの理由でsethidesbackbuttonが機能しませんでした
私はこの方法を使用しました->
self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithCustomView:[[UIView alloc]initWithFrame:CGRectMake(0, 0, 20, 30)]] ;
より単純で軽量な単純な問題については、常にAppleドキュメントを使用してください:)
Swift 3.0の構文は次のとおりです:
self.navigationItem.setHidesBackButton(true, animated:true)
参照
私の場合、現在の答えにはほとんど問題がありませんでした。
だから最終的に私のために働いた解決策は次のとおりです:
- (id)initWithCoder:(NSCoder *)aDecoder {
self = [super initWithCoder:aDecoder];
if (self) {
[self.navigationItem setHidesBackButton:YES animated:NO];
}
return self;
}
Zoran Simicの提案する解決策は、何らかの理由でうまくいきませんでした。
ただし、このコードは機能しました。
MyController* controller = [[MyController alloc] init];
NSArray* array = [[[NSArray alloc] initWithObjects:controller, nil] autorelease];
[self.navigationController setViewControllers:array animated:NO];
[controller release];
NSArrayを自分の好みに合わせて操作する必要があるのは明らかです。それが誰かを助けることを願っています:)
UIViewControllerサブクラスには、次のメソッドがあります。
-(void)setEditing:(BOOL)editing animated:(BOOL)animated {
[super setEditing:editing animated: animated];
// hide back button in edit mode
[self.navigationItem setHidesBackButton:editing animated:YES];
}
これにより、Swiftで戻るボタンが非表示になり、追加ボタンに置き換えられます。
override func setEditing(_ editing: Bool, animated: Bool) {
super.setEditing(editing, animated: animated)
// This hides the back button while in editing mode, which makes room for an add item button
self.navigationItem.setHidesBackButton(editing, animated: animated)
if editing {
// This adds the add item button
let addButton = UIBarButtonItem(barButtonSystemItem: .add, target: self, action: #selector(addTapped))
// Use the animated setter for the left button so that add button fades in while the back button fades out
self.navigationItem.setLeftBarButton(addButton, animated: animated)
self.enableBackGesture(enabled: false)
} else {
// This removes the add item button
self.navigationItem.setLeftBarButton(nil, animated: animated)
self.enableBackGesture(enabled: true)
}
}
func enableBackGesture(enabled: Bool) {
// In addition to removing the back button and adding the add item button while in edit mode, the user can still exit to the previous screen with a left-to-right swipe gesture in iOS 7 and later. This code disables this action while in edit mode.
if let navigationController = self.navigationController {
if let interactivePopGestureRecognizer = navigationController.interactivePopGestureRecognizer {
interactivePopGestureRecognizer.isEnabled = enabled
}
}
}
これにより、戻るボタンが非表示になります
let backBtn = UIBarButtonItem(title: "", style: UIBarButtonItemStyle.plain, target: navigationController, action: nil)
navigationItem.leftBarButtonItem = backBtn
スウィフト3。
通常、このページですでに何度も説明したように、AppleのViewController APIを使用する必要がありますが、[戻る]ボタンをすぐに制御する必要がある場合があります。
次のコードは、[戻る]ボタンを非表示にし、非表示のボタン領域でタップの衝突検出が行われないようにします。
let emptyView = UIView(frame: .zero)
self.navigationItem.leftBarButtonItem = UIBarButtonItem(customView: emptyView)