gpt4 book ai didi

ios - 如何使用 Swift 选择器?选择器不断将结果变为 `Type has no member`

转载 作者:IT王子 更新时间:2023-10-29 05:23:40 27 4
gpt4 key购买 nike

我正在努力处理以下代码:

backgroundTimer = NSTimer.scheduledTimerWithTimeInterval(3, target: gvc, selector: #selector(GameViewController.addNext), userInfo: nil, repeats: true)

我似乎无法让#selector 工作。此代码结果为:

Type 'GameViewController' has no member 'addNext'

即使成员(member)就在那里......这是完整的代码:

class GameViewController: GAITrackedViewController, AVAudioPlayerDelegate  {

var sceneCanvas: SKSpriteNode?
override func viewDidLoad() {
skView.presentScene(WelcomeScene(size: view.bounds.size, gvc: self))
}

func createBackground(boundsSize: CGRect, gvc: GameViewController) -> SKSpriteNode {
addUILabels(gvc)
return sceneCanvas!
}

func addUILabels(gvc: GameViewController) {
backgroundTimer = NSTimer.scheduledTimerWithTimeInterval(3, target: gvc, selector: #selector(GameViewController.addNext), userInfo: nil, repeats: true)
}

public func addNext() {
let backgroundLabel = SKSpriteNode(imageNamed: "label1.png")
sceneCanvas!.addChild(backgroundLabel!)
backgroundLabel?.runAction(SKAction.moveByX(-screenSize.width , y: 0, duration: 12))
}
}

class WelcomeScene: SKScene {
init(size: CGSize, gvc: GameViewController){
super.init ()
let bounds = CGRect(origin: CGPoint(x: 0,y: 0), size: size)
sceneCanvas = createBackground(bounds, gvc: gvc)
self.addChild(sceneCanvas!)
}
}

最佳答案

我在使用 UILongPressGestureRecognizer 和 Swift 3 时遇到了这个问题。

我的方法在一个扩展中用于在表格 View 单元格上长按:

// Long press table view extension
extension MyViewController: UIGestureRecognizerDelegate {

public func handleLongPress(longPressGesture: UILongPressGestureRecognizer) {

let p = longPressGesture.location(in: self.tableView)
let indexPath = self.tableView.indexPathForRow(at: p)

if indexPath == nil {
print("Long press on table view, not row.")
}
else if (longPressGesture.state == UIGestureRecognizerState.began) {
print("Long press on row, at \(indexPath!.row)")
}
}
}

然后,在我的 viewDidLoad() 中:

     // Configure long press on tableviewcell
let longPressGesture:UILongPressGestureRecognizer = UILongPressGestureRecognizer(target: self, action: #selector(MyViewController.handleLongPress))
longPressGesture.minimumPressDuration = 1.0 // 1 second press
longPressGesture.delegate = self
self.tableView.addGestureRecognizer(longPressGesture)

对我来说,通过对选择器使用以下语法解决了这个问题:

action: #selector(MyViewController.handleLongPress)

我尝试了以下替代方案,但没有任何运气。 这些不起作用:

  • action: #selector(self.handleLongPress)
  • action: #selector(MyViewController.handleLongPress(_:))
  • action: #selector(self.handleLongPress(_:))
  • action: #selector("handleLongPress(_:)")

此外,即使我似乎没有向 MyViewController.handleLongPress 传递任何参数,选定的行也会在长按选择时打印到控制台:

长按第 5 行

关于ios - 如何使用 Swift 选择器?选择器不断将结果变为 `Type has no member`,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36975323/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com