Отменить операцию повтора
Я использовал следующий код для отмены операции повтора. Я изменяю цвет фона ярлыка, и моя операция отмены / повтора работает нормально, но теперь я добавил цвет текста ярлыка, поэтому всякий раз, когда я изменяю только цвет фона или цвет текста по отдельности, он работает нормально, но если я изменяю цвет фона и цвет текста одновременно Время тогда не будет работать должным образом. что я должен делать? пожалуйста помоги.!
@IBOutlet var myObject: UILabel!
// MARK: - View Life Cycle
override func viewDidLoad() {
super.viewDidLoad()
myObject.backgroundColor = UIColor.yellow
}
func setMyObjectColor(_ color: UIColor) {
(undoManager?.prepare(withInvocationTarget: self) as AnyObject).setMyObjectColor(myObject.backgroundColor!)
myObject.backgroundColor = color
}
func setMyObjectTextColor(_ color: UIColor) {
(undoManager?.prepare(withInvocationTarget: self) as AnyObject).setMyObjectTextColor(myObject.textColor!)
myObject.textColor = color
}
@IBAction func changeColor(_ sender: Any){
setMyObjectColor(UIColor.blue)
}
@IBAction func changeTextColor(_ sender: Any){
setMyObjectTextColor(UIColor.white)
}
@IBAction func undo(_ sender: Any) {
undoManager?.undo()
}
@IBAction func redo(_ sender: Any) {
undoManager?.redo()
}}
1 ответ
Решение
@IBOutlet var myObject: UILabel!
// MARK: - View Life Cycle
override func viewDidLoad() {
super.viewDidLoad()
myObject.backgroundColor = UIColor.yellow
}
func setMyObjectColor(_ Backcolor: UIColor) {
(undoManager?.prepare(withInvocationTarget: self) as AnyObject).setMyObjectColor(myObject.backgroundColor!)
myObject.backgroundColor = Backcolor
}
func setMyObjectTextColor(_ Textcolor: UIColor) {
(undoManager?.prepare(withInvocationTarget: self) as AnyObject).setMyObjectTextColor(myObject.textColor!)
myObject.textColor = Textcolor
}
func setMyObjectText(_ Text: String) {
(undoManager?.prepare(withInvocationTarget: self) as AnyObject).setMyObjectText((myObject.text! as AnyObject) as! String)
myObject.text = Text
}
@IBAction func changeColor(_ sender: Any){
setMyObjectColor(UIColor.blue)
}
@IBAction func changeTextColor(_ sender: Any){
setMyObjectTextColor(UIColor.white)
}
@IBAction func changeText(_ sender: Any) {
setMyObjectText("Khush")
}
@IBAction func undo(_ sender: Any) {
undoManager?.undo()
}
@IBAction func redo(_ sender: Any) {
undoManager?.redo()
}
С помощью этого кода моя проблема решена.