iOSでナビゲーションボタンの "戻る "アクションを処理しようとしています。
2023-09-15 07:39:08
質問
私は、ユーザーがナビゲーションバーの "back" ボタンをタップしたときに、それが発生したときにいくつかの操作を実行するために、それを検出する必要があります。私は、この方法で、そのようなボタンに手動でアクションを設定しようとしています。
[self.navigationItem.backBarButtonItem setAction:@selector(performBackNavigation:)];
- (void)performBackNavigation:(id)sender
{
// Do operations
[self.navigationController popViewControllerAnimated:NO];
}
最初はビューコントローラ自体にそのコードを配置したのですが、その際に
self.navigationItem.backBarButtonItem
のように思えました。
nil
になっているようなので、同じコードを親のビューコントローラに移動して、前者をナビゲーションスタックにプッシュするようにしました。しかし、私はそれを動作させることができません。私はこの問題に関するいくつかの記事を読んで、それらのいくつかは、セレクタが親ビューコントローラに設定される必要があると述べたが、私のためにそれはとにかく動作しません...。私は何が間違っている可能性がありますか?
ありがとうございます。
どのように解決するのですか?
以下のコードを使ってみてください。
VIewWillDisappear
メソッドを使用して、NavigationItemの戻るボタンが押されたことを検出するコードを試してみてください。
-(void) viewWillDisappear:(BOOL)animated
{
if ([self.navigationController.viewControllers indexOfObject:self]==NSNotFound)
{
// Navigation button was pressed. Do some stuff
[self.navigationController popViewControllerAnimated:NO];
}
[super viewWillDisappear:animated];
}
または、ナビゲーションバックボタンのアクションを取得する別の方法があります。
戻るボタンのUINavigationItemのカスタムボタンを作成します。
例:
ViewDidLoadで:
- (void)viewDidLoad
{
[super viewDidLoad];
UIBarButtonItem *newBackButton = [[UIBarButtonItem alloc] initWithTitle:@"Home" style:UIBarButtonItemStyleBordered target:self action:@selector(home:)];
self.navigationItem.leftBarButtonItem=newBackButton;
}
-(void)home:(UIBarButtonItem *)sender
{
[self.navigationController popToRootViewControllerAnimated:YES];
}
スウィフト:
override func willMoveToParentViewController(parent: UIViewController?)
{
if parent == nil
{
// Back btn Event handler
}
}
関連
-
XCode のコンパイル例外を解決する clang: error: linker command failed with exit code 1
-
[解決済み] iOSまたはmacOSで、インターネット接続が有効かどうかを確認するにはどうすればよいですか?
-
[解決済み] Xcode 7のエラーです。"Missing iOS Distribution signing identity for ..." (iOS配布用署名IDがありません)
-
[解決済み] 文字列の長さを取得する
-
[解決済み] UITextFieldの最大文字数を設定します。
-
[解決済み] NSNotificationCenterのaddObserver in Swift
-
[解決済み] セキュリティで保護されたWebサービスにもアクセスするiOSアプリで、Facebook認証を行うためのデザイン
-
[解決済み] ファイルはユニバーサル(3スライス)ですが、iOSの静的ライブラリのための(n)ARMv7-sスライスエラーが含まれていない、どうにかして回避するには?
-
[解決済み】iPhoneのナビゲーションバーにある「戻る」ボタンを隠すには?
-
[解決済み] ナビゲーションコントローラーを組み込んだポップオーバーがバックナビのサイズを考慮しない問題
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] iOSのバージョンを確認する方法を教えてください。
-
[解決済み] UITextViewのサイズをコンテンツに合わせるには?
-
[解決済み] UINavigationBarの1px下の行を非表示にする方法
-
[解決済み] テキストフィールドを移動する方法(次へボタン/完了ボタン)
-
[解決済み] 「GCC使用時に「Xcode/iOSのライセンスに同意するには管理者権限が必要です。rootでsudoを使用して再実行してください。
-
[解決済み] アプリのプレビュー用にiOSシミュレータのビデオをキャプチャー
-
[解決済み] Swift 3, 4, 5 で dispatch_after GCD を書くにはどうしたらいいですか?
-
[解決済み] UILabelで複数行のテキストを表示する
-
[解決済み] iOS 7でステータスバーとナビゲーションバーがビューの境界を越えて表示される
-
[解決済み] Swift 3でディスパッチキューを作成する方法