web-dev-qa-db-ja.com

iOSでナビゲーションバーのボタンアイテムを無効にする方法

Navigation Controllerを作成しました。 2番目のビュー(プッシュされます)には、いくつかのWebサービス呼び出しがあり、オーバーレイビューと設定を配置します

self.view.userInteractionEnabled = NO ;

Webサービスの呼び出しが完了すると、次に戻ります

self.view.userInteractionEnabled = YES ;

これを行うと、ナビゲーションバーのボタンを除くすべての他のボタンが無効になります。これらの2つのナビゲーションバーボタン項目を無効にする方法は? (戻るボタンに似たボタンで、最初のView Controllerにポップし、ヘルプに関する情報を提供する別のボタン)。

self.navigationItem.backBarButtonItem.enabled = NOを使用してみました。それでも、ボタンをタップして最初の画面に移動できます。これら2つのボタンを無効にするにはどうすればよいですか?

24
Sravan

これを試して

お勧め

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

このスニペットはボタンを無効にします。

15
Jay Mayu

UINavigationControllerビューとナビゲーションバーの対話を無効にするだけです。

self.navigationController.navigationBar.userInteractionEnabled = NO;
self.navigationController.view.userInteractionEnabled = NO;

そして必要になったときに有効にします:

self.navigationController.navigationBar.userInteractionEnabled = YES;
self.navigationController.view.userInteractionEnabled = YES;
8
jbouaziz

Latest Swift:戻るボタンを非表示にするには、次を使用する必要があります。

self.navigationItem.setHidesBackButton(true, animated: false)

注:これにより、ナビゲーションバーにバグが発生し、バックボタンのない(またはその場所にleftButtonのある)ビューに移行するときに、非表示のバックボタンの代わりにアーティファクトが表示される可能性があります。表示されるアーティファクトは、楕円「...」またはスタック上の前のviewControllerのタイトルです。このバグは、Apple独自のサンプルコードプロジェクト「CustomizingUINavigationBar」CustomBackButtonViewController.mに記載されているバグに関連すると考えています。

7
ObjectiveTC

このコードはSwift 4.2

self.navigationItem.rightBarButtonItem?.isEnabled = false

上記のコードはボタンを無効にします。有効にするには、ブール値をtrueに切り替えます

2
Kavin Varnan

UIBarButtonItemを実際に無効にする最も簡単な方法は次のとおりです。

barButtonVar.isEnabled = false
2
andrewlundy
- (void)viewDidLoad
{
[super viewDidLoad];
self.navigationItem.leftBarButtonItem=nil;
self.navigationItem.hidesBackButton=YES;
}
2
user4919266

バージョンiOS 10.3の場合、Swift 3:

self.navigationItem.rightBarButtonItem?.isEnabled = false.
1
Sagar D

私はViewControllerにプロパティを追加するだけでこれを解決しました:

@property (nonatomic, strong) IBOutlet UIBarButtonItem * RightButton;

次に、ストーリーボードのボタンに接続しました。その後、次のようなプロパティを設定できます。

self.RightButton.enabled=true;
1
Sjakelien

このコードを試してください:

UIApplication.sharedApplication().beginIgnoringInteractionEvents()

これにより、ユーザーはアプリと対話できなくなり、サービスを呼び出した後、このコードを再度記述します。

UIApplication.sharedApplication().endIgnoringInteractionEvents()

確かにこれが役立ちます。

1
Muhammad Fasi

Swift 3:

ナビゲーションバーボタンアイテムを無効にする場合ORホールUINavigationBarを無効にする場合、つまりナビゲーションバーに存在するすべてのアイテムを使用する場合は、以下のコード行を使用します;

// if you want disable
self.navigationController?.navigationBar.isUserInteractionEnabled = false

// if you want enable again
self.navigationController?.navigationBar.isUserInteractionEnabled = true

お楽しみください...!

1
Kiran jadhav

1行のソリューション

self.navigationController?.view.isUserInteractionEnabled = false
0
Ghulam Rasool
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のみでテスト済み

0
Komicon

ナビゲーションバーボタン項目は、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!
}
0
Diviyo