画面下部のimageViewにメッセージを表示するために、編集モードが選択されているときにMKMapViewを上に移動するために編集/完了ボタンを使用しています。私の理解では、このボタンの機能を変更するには、override func setEditing() を使用する必要があります。
編集モードから完了モードに一度変更することはできますが、対応するタイトルを変更すると、編集モードに戻すことはできません。その結果、「完了」を何度も押すと、「完了」のままになり、MKMapView が上に移動し続けます。
これをトグルとして動作させたいのですが、何らかの理由でプロセスが回避されます:
override func setEditing(_ editing: Bool, animated: Bool) {
super.setEditing(editing, animated: true)
if editing {
print("Are we editing NOW: \(isEditing)")
mapView.frame.origin.y = -24
editButtonItem.title = "Done"
} else {
print("Are we editing: \(isEditing)")
mapView.frame.origin.y = 64
editButtonItem.title = "Edit"
}
super.setEditing(editing, animated: true)
if/else ステートメント内で「isEditing」と「isEnabled」の実装を試みましたが、これまでのところ機能していません。私は何が欠けていますか?
編集:
さて、私はこのアプローチを思いつきました。これは機能しますが、扱いにくいようです。
override func setEditing(_ editing: Bool, animated: Bool) {
super.setEditing(editing, animated: true)
if editing {
print("Are we editing NOW: \(isEditing)")
mapView.frame.origin.y = -24
editButtonItem.title = "Done"
} else {
print("Are we editing: \(isEditing)")
mapView.frame.origin.y = 64
editButtonItem.title = "Edit"
}
super.setEditing(editing, animated: true)
}
mapView をスーパービューの一番下に戻すには、値として 64 を使用する必要がありますが、その理由は正確にはわかりません。