【问题标题】:Swift NSTimer CodingSwift NSTimer 编码
【发布时间】:2015-07-29 14:06:50
【问题描述】:

使用 Swift 2.0 并尝试在自定义键盘中实现 Swift NSTimer。当 Button1 被按下时,Button2 显示得很好,直到 NSTimer 启动并使键盘崩溃。

我试图在几秒钟后隐藏 Button2。

@IBAction func Button1(sender: UIButton) {
    Button2.setTitle("Text", forState: UIControlState.Normal)

    NSTimer.scheduledTimerWithTimeInterval(1.0, target: self, selector: Selector("Hide:"), userInfo: nil, repeats: false)
    Button2.hidden = false
}

【问题讨论】:

  • 我们还能看到Hide() 的样子吗?也许那里出了点问题。
  • 显示您的 Hide: 函数定义。
  • @Cole func Hide(){ Button2.hidden = true }
  • func Hide().... 前面添加@objc + 你的函数应该接受你指定的一个参数
  • 它给了我错误信息'只有类、协议、方法、初始化器、属性和下标声明可以被声明@objc。

标签: xcode swift nstimer swift2


【解决方案1】:

这应该可以工作(请注意,我更改了一些函数名称以更严格地遵循约定):

@IBAction func button1Tapped() {
    button2.setTitle("Text", forState: .Normal)
    button2.hidden = false
    NSTimer.scheduledTimerWithTimeInterval(2, target: self, selector: "hideButton2", userInfo: nil, repeats: false)
}

@objc func hideButton2() {
    button2.hidden = true
}

【讨论】:

  • @Caitlin 我也推荐了这个,你说不行(
【解决方案2】:

Selector("Hide:") 替换为"Hide:" 并在您的函数前面添加@objc

【讨论】:

  • 那不会有任何的不同。
  • 在 Swift 中,"foo:" 的运行方式与 Selector("foo:") 相同
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-05-22
  • 2014-11-08
  • 2014-08-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多