Navigation Controllerを作成しました。 2番目のビュー(プッシュされます)には、いくつかのWebサービス呼び出しがあり、オーバーレイビューと設定を配置します
self.view.userInteractionEnabled = NO ;
Webサービスの呼び出しが完了すると、次に戻ります
self.view.userInteractionEnabled = YES ;
これを行うと、ナビゲーションバーのボタンを除くすべての他のボタンが無効になります。これらの2つのナビゲーションバーボタン項目を無効にする方法は? (戻るボタンに似たボタンで、最初のView Controllerにポップし、ヘルプに関する情報を提供する別のボタン)。
self.navigationItem.backBarButtonItem.enabled = NO
を使用してみました。それでも、ボタンをタップして最初の画面に移動できます。これら2つのボタンを無効にするにはどうすればよいですか?
これを試して
お勧め
self.navigationItem.leftBarButtonItem.enabled = NO;
self.navigationItem.rightBarButtonItem.enabled = NO;
または単に無効にする
エッジケース
self.view.window.userInteractionEnabled = NO;
更新:最近Appleは、戻るボタンによる有効化/無効化を許可しません。その代わりに、非表示にすることができます。
self.navigationItem.hidesBackButton = YES;
Swift
で実行している場合、次のことができます。
self.navigationItem.rightBarButtonItem?.enabled = true
このスニペットはボタンを無効にします。
UINavigationController
ビューとナビゲーションバーの対話を無効にするだけです。
self.navigationController.navigationBar.userInteractionEnabled = NO;
self.navigationController.view.userInteractionEnabled = NO;
そして必要になったときに有効にします:
self.navigationController.navigationBar.userInteractionEnabled = YES;
self.navigationController.view.userInteractionEnabled = YES;
Latest Swift:戻るボタンを非表示にするには、次を使用する必要があります。
self.navigationItem.setHidesBackButton(true, animated: false)
注:これにより、ナビゲーションバーにバグが発生し、バックボタンのない(またはその場所にleftButtonのある)ビューに移行するときに、非表示のバックボタンの代わりにアーティファクトが表示される可能性があります。表示されるアーティファクトは、楕円「...」またはスタック上の前のviewControllerのタイトルです。このバグは、Apple独自のサンプルコードプロジェクト「CustomizingUINavigationBar」CustomBackButtonViewController.mに記載されているバグに関連すると考えています。
このコードはSwift 4.2
self.navigationItem.rightBarButtonItem?.isEnabled = false
上記のコードはボタンを無効にします。有効にするには、ブール値をtrueに切り替えます
UIBarButtonItemを実際に無効にする最も簡単な方法は次のとおりです。
barButtonVar.isEnabled = false
- (void)viewDidLoad
{
[super viewDidLoad];
self.navigationItem.leftBarButtonItem=nil;
self.navigationItem.hidesBackButton=YES;
}
バージョンiOS 10.3の場合、Swift 3:
self.navigationItem.rightBarButtonItem?.isEnabled = false.
私はViewControllerにプロパティを追加するだけでこれを解決しました:
@property (nonatomic, strong) IBOutlet UIBarButtonItem * RightButton;
次に、ストーリーボードのボタンに接続しました。その後、次のようなプロパティを設定できます。
self.RightButton.enabled=true;
このコードを試してください:
UIApplication.sharedApplication().beginIgnoringInteractionEvents()
これにより、ユーザーはアプリと対話できなくなり、サービスを呼び出した後、このコードを再度記述します。
UIApplication.sharedApplication().endIgnoringInteractionEvents()
確かにこれが役立ちます。
Swift 3:
ナビゲーションバーボタンアイテムを無効にする場合ORホールUINavigationBarを無効にする場合、つまりナビゲーションバーに存在するすべてのアイテムを使用する場合は、以下のコード行を使用します;
// if you want disable
self.navigationController?.navigationBar.isUserInteractionEnabled = false
// if you want enable again
self.navigationController?.navigationBar.isUserInteractionEnabled = true
お楽しみください...!
1行のソリューション
self.navigationController?.view.isUserInteractionEnabled = false
var menuBtn = new UIButton(UIButtonType.Custom);
menuBtn.Frame = new CGRect(x: 0.0, y: 0.0, width: 20, height: 20);
menuBtn.SetImage(new UIImage("filter"), UIControlState.Normal);
menuBtn.Alpha = 0.05f; //to set the Alpha
menuBtn.Enabled = false;
mvvmcross Xamarin.iOSのみでテスト済み
ナビゲーションバーボタン項目は、navigationItemプロパティを介して参照することで切り替える必要があります。
例えば:
func setupNav() {
let saveButton = UIBarButtonItem.init(barButtonSystemItem: .save, target: self, action: #selector(onSavePressed))
navigationItem.rightBarButtonItem = saveButton
saveButton.isEnabled = false
}
func validateSave() {
saveButton.isEnabled = isConditionMet // WON'T work
navigationItem.rightBarButtonItem.isEnabled = isConditionMet // WORKS!
}