回答:
私はちょうど答えを見つけました、コントローラでこれを使用してください:
[self.navigationItem setHidesBackButton:YES animated:YES];
そしてそれを復元するには:
[self.navigationItem setHidesBackButton:NO animated:YES];
-
[更新]
Swift 3.0:
self.navigationItem.setHidesBackButton(true, animated:true)
viewWillAppear:animated
、非表示にしviewWillDisappear:animated
て復元することです。
(既に推奨されている方法を使用して)[戻る]ボタンを削除することに加えて、iOS 7以降では、左から右にスワイプするジェスチャーで前の画面に「ポップ」できることを忘れないでください。
これを無効にする(適切な場合)には、以下を実装します(たとえば、viewDidLoadで)。
if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 7.0)
self.navigationController.interactivePopGestureRecognizer.enabled = NO;
既存の回答を明確にするために:hidesBackButton
プロパティは正しい回答ですが、多くの回答では何をself
指しているのか明確ではありません。基本的にself.navigationItem.hidesBackButton = YES
は、にプッシュされる(または単にプッシュされる)ビューコントローラで設定する必要がありますUINavigationController
。
つまり、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
簡単な問題には常に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を自分の好みに合わせて操作して機能させる必要があることは明らかです。それが誰かを助けることを願っています:)
これにより、戻るボタンが非表示になり、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
}
}
}
setHidesBackButton:
。navigationItemをnavigationControllerにプッシュする前に呼び出す必要があります。