【发布时间】:2018-01-16 01:53:22
【问题描述】:
我正在使用编辑/完成按钮在选择编辑模式时向上移动MKMAPView,目的是在屏幕底部的ImageView中显示消息。我的理解是改变这个按钮的功能我必须使用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 返回到超级视图的底部,不完全确定为什么。
【问题讨论】:
标签: ios swift uiview uiviewcontroller setediting