【问题标题】:Swift 3 iOS 10 Reference to UIImageView to get Value for other functionSwift 3 iOS 10 参考 UIImageView 以获取其他功能的价值
【发布时间】:2018-02-02 06:51:29
【问题描述】:

我正在寻找一种方法来以代码方式添加一种从另一个函数引用 UIImageView 值的方法。

我有一个函数,它为数组中的每个实例创建一个新的 UIImageView。此外,它还添加了一个 UITapGestureRecognizer,它在点击时调用一个函数。现在我想要在点击时调用的函数来获取与相应 UIImageView 相关的该数组的实例。

我希望很清楚我想要做什么。 :)

【问题讨论】:

  • 您可以为每个 UIImageView 创建唯一的 id,并为 Tap 编写单个函数。根据 id,相应的 UIImageView 被点击。
  • 因此,当您点击 UIImageView 时,您希望点击手势识别器告诉您图像视图在哪个数组中?或者你想知道哪个 UIImageView 被点击了?
  • 所以不要使用 UITapGestureRecognizer 为点击编写一个单独的函数。但是这个函数会是什么样子呢?
  • @WsCandy 的想法是为数组中的每个实例设置一个图标。 UIImageView 无论如何都没有连接到数组。这就是为什么我想给 UIImageViews 一些 ID,以便能够引用 UIImageView 对应的数组中的位置。
  • 如果源图像在被调用函数可以访问的数组中,为什么不在每个图像视图中将数组索引设置为 tag 属性?

标签: ios swift swift3 uiimageview ios10


【解决方案1】:

假设您有一组图像:

let myImages = [UIImage(named: "image1"), UIImage(named: image2", UIImage(named: "image3"0]

您在三个单独的图像视图中拥有这些图像:

imageViewA.image = myImages[0] imageViewB.image = myImages[1] imageViewC.image = myImages[2]

此外,您已正确设置每个图像视图在点击时调用相同函数的所有内容(我们将其称为 imageViewTapped())。

您需要做的就是 (1) 将每个图像视图的 tag 属性正确设置为指向数组索引,(2) 获取被点击的视图,以及 (3) 检索图像。

imageViewA.tag = 0
imageViewB.tag = 1
imageViewC.tag = 2

func imageViewTapped(_ recognizer:UITapGestureRecognizer) {
    let tappedView = recognizer.view
    let sourceImage = myImages[tappedView.tag]
}

我建议在循环中设置所有内容(标签、点击识别器)并在需要时在函数中添加一些类型转换。但我看不到你的代码来帮助你。

【讨论】:

  • 完美!实际上我已经有了 func imageViewTapped(_recognizer:UITapRecognizer) { let tappedView =recognizer.view let sourceImage = myImages[tappedView.tag] } 但我没有强制转换 UITapGeastureRecognizer 我有 AnyObject。这一定是原因,因为它返回 nil。
猜你喜欢
  • 1970-01-01
  • 2015-09-04
  • 1970-01-01
  • 2017-04-13
  • 1970-01-01
  • 2017-11-13
  • 2012-02-23
相关资源
最近更新 更多