我有一个通用的控件类,需要根据视图控制器来设置按钮的完成方式。由于setLeftButtonActionWithClosure函数需要将一个闭包作为参数来设置,因此应该将其设置为取消按钮的动作。在Swift中怎么可能因为我们需要将函数名称作为String传递给action:参数。
func setLeftButtonActionWithClosure(completion: () -> Void)
{
self.leftButton.addTarget(<#target: AnyObject?#>, action: <#Selector#>, forControlEvents: <#UIControlEvents#>)
}
注意:就像@EthanHuang一样,“如果您有两个以上的实例,则此解决方案将不起作用。所有操作都将被最后一次分配覆盖。”
在开发时请记住这一点,我会尽快发布另一个解决方案。
如果要将闭包作为目标添加到UIButton
,则必须UIButton
使用来向类添加函数extension
斯威夫特5
import UIKit
extension UIButton {
private func actionHandler(action:(() -> Void)? = nil) {
struct __ { static var action :(() -> Void)? }
if action != nil { __.action = action }
else { __.action?() }
}
@objc private func triggerActionHandler() {
self.actionHandler()
}
func actionHandler(controlEvents control :UIControl.Event, ForAction action:@escaping () -> Void) {
self.actionHandler(action: action)
self.addTarget(self, action: #selector(triggerActionHandler), for: control)
}
}
较旧
import UIKit
extension UIButton {
private func actionHandleBlock(action:(() -> Void)? = nil) {
struct __ {
static var action :(() -> Void)?
}
if action != nil {
__.action = action
} else {
__.action?()
}
}
@objc private func triggerActionHandleBlock() {
self.actionHandleBlock()
}
func actionHandle(controlEvents control :UIControlEvents, ForAction action:() -> Void) {
self.actionHandleBlock(action)
self.addTarget(self, action: "triggerActionHandleBlock", forControlEvents: control)
}
}
并致电:
let button = UIButton()
button.actionHandle(controlEvents: .touchUpInside,
ForAction:{() -> Void in
print("Touch")
})
我正在开发一个需要安排任务的应用程序,所以我使用AWS Lambda。但是,调度时间是动态的,因为它取决于用户请求,所以不能使用AWS Console进行调度,所以我使用AWS JavascriptSDK来调度它。这是流程: 创建CloudWatch规则(这个成功了,我可以在控制台看到正在创建的规则 为lambda的策略添加权限,以便cloud dwatch事件可以调用它(Lambda函数代码对所
在我开始之前--我看了以下链接,没有一个对我起作用(我的假设是我做错了什么): > https://appmediation.com/how-to-add-local-libraries-to-gradle/ 如何向build.gradle文件添加本地.jar文件依赖项? 在我的Gradle Java项目中使用本地jar作为依赖项 如何向build.gradle.kt文件添加本地.jar文件依赖项
几天前,我为一个java库创建了一个Github包。现在我想将Github包中的依赖项添加到另一个Maven项目中,但出现以下错误: 无法传输工件io。geilehner:StoryBlokJavaSDK:pom:1.0。1从/到github(https://maven.pkg.github.com/geilix10/):为的传输失败https://maven.pkg.github.com/gei
问题内容: 我正在为应用设置身份验证。在发出登录请求后,将发送一个JSON Web令牌作为响应。我可以通过Ajax将其附加到标题。问题是登录后使用window.location.pathname进行重定向时,因为它不是Ajax请求,所以它没有在标头上附加令牌。我该如何解决? 问题答案: 简短的答案是:您不能使用设置HTTP标头。
我想包括JavaDoc for库,但在网站上,他们只提供一个HTML。 我试过了: 下载html并将文件夹添加为jar的JavaDoc, 下载并压缩到index.html,并将下载的文件夹压缩到 添加URL 但有什么好结果。. 我怎样才能做到这一点?