当选择编辑模式时,我使用编辑/完成按钮向上移动MKMapView,目的是在屏幕底部的imageView中显示消息。我的理解是改变这个按钮的功能我必须使用override func setEditing()。
虽然我可以让它从编辑模式更改为完成模式一次,但相应的标题更改,我永远无法让它更改回编辑模式。结果就是当你按下" Done"它一遍又一遍地完成了#34;完成"并继续移动MKMapView。
我希望这个作为一个切换操作,但由于某种原因,这个过程让我失望:
is_continuous_feed: "false"
我尝试实施" isEditing"和#34; isEnabled"在我的if / else语句中,到目前为止还没有工作。我错过了什么?
编辑:
嗯,我想出了这种方法,虽然有效,但看起来很笨重。
is_continuous_feed: false
我不得不使用64作为值来让mapView返回到超级视图的底部,不完全确定原因。
答案 0 :(得分:1)
首先,不要为“编辑/完成”按钮创建自己的按钮。 UIViewController
使用editButtonItem
属性为您提供此功能。
我不知道如何在故事板中使用它,但在代码中,您在viewDidLoad
方法中添加以下行:
navigationItem.rightBarButtonItem = editButtonItem
此按钮已设置为调用setEditing(_:animated:)
方法并在编辑和完成之间切换按钮标题。
所以你需要做的就是覆盖setEditing(_:animated:)
方法。
您的实施已接近尾声。只在开始时调用super.setEditing
一次,不要尝试设置按钮的标题。
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
} else {
print("Are we editing: \(isEditing)")
mapView.frame.origin.y = 64
}
}