2017-07-11 116 views
-1
import UIKit 

class ViewController: UIViewController { 
    @IBOutlet weak var swipeLabel: UILabel! 

    override func viewDidLoad() { 
     super.viewDidLoad() 

     swipeLabel.text = "0" 
     let leftSwipe = UISwipeGestureRecognizer(target: self, action: #selector (ViewController.swipeReceive(sender:))) 

     let rightSwipe = UISwipeGestureRecognizer(target: self, action: #selector(ViewController.swipeReceive(sender:))) 

     leftSwipe.direction = .left 
     rightSwipe.direction = .right 

     view.addGestureRecognizer(leftSwipe) 
     view.addGestureRecognizer(rightSwipe) 

     let disPlaynumon = swipeReceive(sender: UISwipeGestureRecognizer) // Error here 
     swipeLabel.text = disPlaynumon 
    } 

    func swipeReceive(sender:UISwipeGestureRecognizer) -> String 
    { 
     if(sender.direction == .left) 
     { 
      var disPlaynum = 0 
      disPlaynum = disPlaynum-1 
      return String(disPlaynum) 
     } 

     if(sender.direction == .right) 
     { 
      var disPlaynum = 0 
      disPlaynum = disPlaynum+1 
      return String(disPlaynum) 
     } 
return String("not right or left swiped") 
    } 
} 

的错误是上线的功能时获取迅速错误调用返回字符串

无法将类型的价值“UISwipeGestureRecognizer.Type 'to expected argument type'UISwipeGestureRecognizer'

这个程序应该让你ser向右滑动,然后标签显示加1,当向左时显示减1,但当我调用swipeReceive函数尝试获取将显示在标签上的字符串时,我得到错误。

+0

当'sender.direction'没有左或右时,它不知道该返回什么。你也应该赶上返回这种情况。 – Lawliet

+0

我如何赶上返回? –

+0

只需在最后一条if语句之后添加一个返回String(“”)来捕获其他所有内容。 –

回答

0

是的,你不能这样做。你试图用UISwipeGestureRecognizer调用这个方法吗?该方法期待对象,并且您正在通过该类。该方法将在您滑动视图时自动调用。所以你可以做的是:

import UIKit 

类的ViewController:UIViewController的{ @IBOutlet弱VAR swipeLabel:的UILabel!

override func viewDidLoad() { 
    super.viewDidLoad() 

    swipeLabel.text = "0" 
    let leftSwipe = UISwipeGestureRecognizer(target: self, action: #selector (ViewController.swipeReceive(sender:))) 

    let rightSwipe = UISwipeGestureRecognizer(target: self, action: #selector(ViewController.swipeReceive(sender:))) 

    leftSwipe.direction = .left 
    rightSwipe.direction = .right 

    view.addGestureRecognizer(leftSwipe) 
    view.addGestureRecognizer(rightSwipe) 

    //REMOVE THESE TWO FROM HERE 
    // let disPlaynumon = swipeReceive(sender: UISwipeGestureRecognizer) // Error here 
    //swipeLabel.text = disPlaynumon 

} 

func swipeReceive(sender:UISwipeGestureRecognizer){ 
    var displayNum = 0 
    if(sender.direction == .left){ 
     displayNum = displayNum - 1 
    } 

    if(sender.direction == .right){ 
     displayNum = displayNum + 1 
    } 
    swipeLabel.text = "\(displayNum)" 
} 


}