Используя NSUndoManager, как зарегистрировать отмены с помощью замыканий Swift
Я пытаюсь понять, как использоватьNSLayoutManager
используя закрытие Swift. Я могу успешно зарегистрироватьundo
следующее:
doThing();
undoManager?.registerUndoWithTarget(self, handler: { _ in
undoThing();
}
undoManager?.setActionName("do thing")
Конечно, мне нужно поддержатьredo
что равнозначно отмене отмены. Я могу сделать это:
doThing();
undoManager?.registerUndoWithTarget(self, handler: { _ in
undoThing();
undoManager?.registerUndoWithTarget(self, handler: { _ in
doThing();
}
undoManager?.setActionName("do thing")
}
undoManager?.setActionName("do thing")
Но теперь мне нужно поддержать отмену повторения ... хммм ... ок:
doThing();
undoManager?.registerUndoWithTarget(self, handler: { _ in
undoThing();
undoManager?.registerUndoWithTarget(self, handler: { _ in
doThing();
undoManager?.registerUndoWithTarget(self, handler: { _ in
undoThing();
}
undoManager?.setActionName("do thing")
}
undoManager?.setActionName("do thing")
}
undoManager?.setActionName("do thing")
Как видите, «черепахи внизу». Как мне избежать этого безумия? то есть, во всем примере кода, который я могу найти, люди используют версию кода селектора, чтобы зарегистрировать метод, который может отменить сам - это явно не выполнимо с методом замыкания, который я использую ... Как можно использовать замыкание версия и получить неограниченное отменить / повторить?