0

画面下部の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 を使用する必要がありますが、その理由は正確にはわかりません。

センタービューコントローラーが問題です

4

1 に答える 1