如何在
Swift中使用NSUndoManager?
这是一个Objective-C示例,我试图复制:
[[undoManager prepareWithInvocationTarget:self] myArgumentlessMethod];
然而,Swift似乎没有NSInvocation,这似乎意味着我无法在undoManager上调用它不实现的方法.
我在Swift中尝试过基于对象的版本,但似乎让我的Playground崩溃了:
undoManager.registerUndoWithTarget(self,selector: Selector("myMethod"),object: nil)
然而,似乎崩溃了,即使我的对象接受AnyObject的参数?
在斯威夫特这样做最好的方法是什么?有没有办法避免使用基于对象的注册发送不必要的对象?
解决方法
我在一个游乐场尝试过,它完美无缺地工作:
class UndoResponder: NSObject { func myMethod() { println("Undone") } } var undoResponder = UndoResponder() var undoManager = NSUndoManager() undoManager.registerUndoWithTarget(undoResponder,object: nil) undoManager.undo()