ユーザーが画面を変更したときにナビゲーションバーから項目を追加または削除する必要があるため、次のようなコードがあります。
override func updateIndicator(for viewController: PagerTabStripViewController, fromIndex: Int, toIndex: Int, withProgressPercentage progressPercentage: CGFloat, indexWasChanged: Bool) {
super.updateIndicator(for: viewController, fromIndex: fromIndex, toIndex: toIndex, withProgressPercentage: progressPercentage, indexWasChanged: indexWasChanged)
if indexWasChanged {
if toIndex == 2 {
rightBtn.alpha = 1
} else {
rightBtn.alpha = 0
}
}
}
rightBtn は、ナビゲーション バーの右端にある単なるボタンです。
ただし、テストの実行中に、ユーザーが画面を変更するためにスワイプする代わりに ButtonBar をタップすると、fromIndex と toIndex が間違っていることに気付きました。前回の変更時の値のままです。たとえば、ユーザーが 3 番目の画面から 2 番目の画面にスワイプすると、fromIndex は 2 になり、toIndex は 1 になりますが、ユーザーがバーの 3 番目のボタンをタップすると、fromIndex は 1 であると予想されていても 2 のままになります。 toIndex も 1 のままになりますが、現在は 2 になっているはずです。これにより、ユーザーが 3 番目の画面からスワイプし、バーをタップして 3 番目の画面に戻ると、rightBtn が表示されなくなります。
このようなシナリオで正しい toIndex を取得する方法はありますか、それとも修正できますか?
最初の部分は、バーボタンを直接タップしてナビゲートするバグのある部分です。ポインターのない 2 番目の部分は、スワイプによるナビゲーションで正常に動作します。アイコンは 3 番目のタブにのみ表示されると想定されています。