I am using a Edit/Done button to move an MKMapView upwards when Edit mode is selected, with the intention of display a message in an imageView at the bottom of the screen. 我的理解是改变这个按钮的功能我必须使用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)
}
我必须使用 64 作为值来让 mapView 返回到超级视图的底部,但不完全确定为什么。