- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
这里是 Swift 和 iOS 开发的 super 新手。
我正在关注this tutorial关于在单 View iOS 应用程序中实现自定义控件。这是一个 Swift 2 教程,但到目前为止,我已经可以将所有内容转换为 3(我使用 XCode 8 Beta)。
我有一个自定义类,RatingControl
,连接到 Storyboard中的View
。
在类的构造函数中,我创建一个按钮:
let button = UIButton(frame: CGRect(x: 0, y: 0, width: 44, height: 44))
button.backgroundColor = UIColor.red()
然后,我尝试为按钮分配一个操作。教程说我应该这样做:
button.addTarget(self, action: #selector(RatingControl.ratingButtonTapped(_:)),
for: .touchDown)
然后在同一个 RatingControl
类中创建方法:
func ratingButtonTapped(button: UIButton) {
print("Button pressed 👍")
}
但是当我编译时,它会提示:
type "RatingControl" has no member "ratingButtonTapped"
我已经 100% 确定该函数在类中存在,并且名称正确。 Full source
我是否遗漏了一些明显的东西?
我尝试过的:
按照 this answer 将 @objc
添加到类定义中(但这对于仅使用 Swift 的东西来说似乎很奇怪,不是吗?)
显式地将 ratingButtonTapped()
设为 public
(但这看起来没有必要)
摆弄字符串而不是选择器,button.addTarget(self, action: "RatingControl. ratingButtonTapped", for: .touchDown)
等等,但这只会导致稍后崩溃.
最佳答案
在 Swift 3 中,以下方法引用:func ratingButtonTapped(button: UIButton)
变为 ratingButtonTapped(button:)
。
因此,使用 #selector(RatingControl. ratingButtonTapped(button:))
也可以。
如果你想保留#selector(RatingControl. ratingButtonTapped(_:))
,那么你需要将RatingButtonTapped
方法声明为:
func ratingButtonTapped(_ button: UIButton) { //<- `_`
print("Button pressed 👍")
}
<小时/>
如果类中只有一个 RatingButtonTapped
方法,则可以将选择器寻址为 #selector(RatingControl. ratingButtonTapped)
或简单地(从内部 RatingControl
类)#selector( ratingButtonTapped)
。
关于swift - 添加 UIButton 目标时为 "classname has no member functionname",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42878361/
当前 Google 涂鸦的标记如下所示: 有趣的部分是 onload="window.lol&&lol()" 出于好奇:window.functionname&&functionname() 到底做
我注意到您可以使用或不使用括号来引用函数。为什么?有什么区别? 顺便说一句,我注意到这是有效的:window.onload = functionName; 而这不是:window.onload = f
jQuery 函数有什么区别 $.FunctionName = function(){ alert('Hello!') } 和正常的 javascript 函数? function FunctionN
我知道你可以直接使用名称来获取变量和调用函数 variable.functionName 或使用名称作为字符串 variable["functionName"] or variable[functio
在 jQuery 中,我见过以下两种定义 jQuery 函数的方法: $.fn.CustomAlert = function() { alert('boo!'); }; $.CustomAlert
我正在研究 angularJs 并致力于 javascript 优化。我最近看了YUI创建者的一个视频,他是一位JavaScript专家,关于JavaScript优化。他解释了变量声明和作用域以及 J
const heightOutput = document.querySelector('#height'); const widthOutput = document.querySelector('
我研究 javascript 中的函数继承。根据我读过的文章,我写了代码: function Base(){ var enableVar = true this.enable = func
我有 window.getTask = getTask window.postTask = postTask window.logIn = logIn 我正在寻找一种简写方式来做到这一点。类似 win
这个问题在这里已经有了答案: 关闭 10 年前。 Possible Duplicate: Do you ever need to specify javascript: in an onclick?
我已经使用 ReactJs 几天了。我发现有些语法有点奇怪。例如,有时我必须这样调用函数: {this.functionName} 末尾没有括号。 有时我必须这样调用它: {this.function
我已经使用 ReactJs 几天了。我发现有些语法有点奇怪。例如,有时我必须这样调用函数: {this.functionName} 末尾没有括号。 有时我必须这样调用它: {this.function
这个关闭代码可以工作: function setupSomeGlobals(){ var num = 666; gPrintNumber = function() { // play
我最近开始维护别人的 JavaScript 代码。我正在修复错误、添加功能并尝试整理代码并使其更加一致。 之前的开发人员使用了两种声明函数的方式,我无法确定其背后是否有原因。 这两种方式是: var
我最近开始维护别人的 JavaScript 代码。我正在修复错误、添加功能并尝试整理代码并使其更加一致。 之前的开发人员使用了两种声明函数的方式,我无法确定其背后是否有原因。 这两种方式是: var
我最近开始维护别人的 JavaScript 代码。我正在修复错误、添加功能并尝试整理代码并使其更加一致。 之前的开发人员使用了两种声明函数的方式,我无法确定其背后是否有原因。 这两种方式是: var
我最近开始维护别人的 JavaScript 代码。我正在修复错误、添加功能并尝试整理代码并使其更加一致。 之前的开发人员使用了两种声明函数的方式,我无法确定其背后是否有原因。 这两种方式是: var
我最近开始维护别人的 JavaScript 代码。我正在修复错误、添加功能并尝试整理代码并使其更加一致。 之前的开发人员使用了两种声明函数的方式,我无法确定其背后是否有原因。 这两种方式是: var
我最近开始维护别人的 JavaScript 代码。我正在修复错误、添加功能并尝试整理代码并使其更加一致。 之前的开发人员使用了两种声明函数的方式,我无法确定其背后是否有原因。 这两种方式是: var
我最近开始维护别人的 JavaScript 代码。我正在修复错误、添加功能并尝试整理代码并使其更加一致。 之前的开发人员使用了两种声明函数的方式,我无法确定其背后是否有原因。 这两种方式是: var
我是一名优秀的程序员,十分优秀!