假设我有一个文本字段-inputTextField
和一个操作performActionDynamically
的UI按钮,在同一个类中,我定义了两个函数:1。firstFunc
,2。secondFunc
,现在我要实现此行为:
如果用户在textfield中键入“firstFunc”,然后点击按钮,它应该调用firstFunc
函数;如果用户在textfield中键入“secondFunc”,然后点击按钮,它应该调用secondFunc
函数。
在objective-c中,我可以通过以下伪代码轻松实现它:
在performActionDynamically
内通过inputTextField.text
进入NSSelectorFromString()
以获得选择器
调用self上的performSelector:withObject:
来执行各自的功能
在swift中实现相同的行为时,我唯一能想到的是-
定义两个名为firstFunc
,secondFunc
的闭包
将闭包作为键的值存储在字典中-“firstFunc”和“secondFunc”
根据textfield中的值从字典中获取相应的闭包
调用获取的闭包
有没有更好的方法来达到预期的行为?请引导。
最佳答案
你可以试试这样的:
if self.respondsToSelector(Selector(selectorString)) {
NSTimer.scheduledTimerWithTimeInterval(NSTimeInterval(0), target: self, selector: Selector(inputTextField.text), userInfo: nil, repeats: false)
}
这是作为回调完成的,因此您必须考虑到这一点。
如果您愿意,可以使用NSThread而不是NSTimer:
NSThread.detachNewThreadSelector(Selector(inputTextField.text), toTarget: self, withObject: nil)
关于swift - 根据文本字段中传递的字符串动态执行操作,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29090778/