【问题标题】:swift uitapgesturerecognizer pass parametersswift uitapgesturerecognizer 传参数
【发布时间】:2016-11-06 02:56:27
【问题描述】:

我有很多以编程方式创建的按钮,并且可以随时更改。我的点击手势:

let apriVideoGesture = UITapGestureRecognizer(target: self, action: #selector(PrincipaleController.apriVideo(_:)))
cont.addGestureRecognizer(apriVideoGesture)

func apriVideo(sender : UITapGestureRecognizer){

}

如何传递参数?像这样的东西:

let apriVideoGesture = UITapGestureRecognizer(target: self, action: #selector(PrincipaleController.apriVideo(stringa : "ciao")))
cont.addGestureRecognizer(apriVideoGesture)

func apriVideo(sender : UITapGestureRecognizer, stringa : String){

}

抱歉英语不好,我是意大利人

【问题讨论】:

  • 不,你不能,但告诉我传递这样的目的,以便我可以告诉你一些替代方案
  • 我需要传递一个带有 URL 的字符串。该页面是在服务器接收的一些文章的基础上创建的,我需要在按下的容器的基础上打开特定页面
  • 亚历克斯让我回家,我一定会为你做的
  • 非常感谢,我很绝望
  • 你能告诉我你想创建什么类型的视图,这就是我的想法

标签: swift uitapgesturerecognizer


【解决方案1】:

首先,如果您使用的是按钮,那么为什么要添加点击手势?您可以将目标添加为

btn.addTarget(self, action: #selector(self.btnPressed(_:)), forControlEvents: .TouchDragInside)

但您仍然可以使用轻按手势来实现目标

按照你的坚持使用 UIView

class ViewController: UIViewController {

let arrayOfSongsURL : [String] = [String]()
let startingTag = 100
override func viewDidLoad() {
    super.viewDidLoad()
    let height : CGFloat = 100
    let width : CGFloat = 100
    (arrayOfSongsURL as NSArray).enumerateObjectsUsingBlock { (url, index, finished) -> Void in

        let v = UIView(frame: CGRectMake(0, CGFloat(index) * height, width, height))
        v.tag = self.startingTag + index

        v.addGestureRecognizer(UITapGestureRecognizer(target: self, action: #selector(self.handleTapGesture(_:))))
        self.view.addSubview(v)
    }
    // Do any additional setup after loading the view, typically from a nib.
}

override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()
    // Dispose of any resources that can be recreated.
}


func handleTapGesture(gesture : UITapGestureRecognizer)
{
    let v = gesture.view!
    let tag = v.tag
    let songURL = arrayOfSongsURL[tag - startingTag]

    //Do what you want to do with songURL
}

}

【讨论】:

  • 我也可以用 UIVIew 做到这一点?
  • 是的,你可以用 TapGesture 使用 UIView,你不能像我展示的那样向 UIView 添加目标
  • 你不懂什么?
  • 如果没有按钮的“添加目标”,我该怎么做。因为我只使用 UIView
  • 您可以将视图子类化并创建一个可以存储 url 并访问相同的变量
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-11-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多