gpt4 book ai didi

ios - 如何将 setEditing 状态转换为编辑/完成按钮的切换模式

转载 作者:行者123 更新时间:2023-11-28 15:07:13 25 4
gpt4 key购买 nike

选择编辑模式时,我正在使用编辑/完成按钮将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 返回到 super View 的底部,我不确定为什么。

Center view controller is the one in question

最佳答案

首先,不要为“编辑/完成”按钮创建自己的按钮。 UIViewController 使用 editButtonItem 属性为您提供此功能。

我不知道如何在 Storyboard中使用它,但在代码中,您可以在 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
}
}

关于ios - 如何将 setEditing 状态转换为编辑/完成按钮的切换模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48273044/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com