我有自己的自定义视图,并将其动态添加到UIViewController。
这些视图类似于:
class pinView: UIView {
var userID : String?
var lastTimeConnected : Date?
init(userID: String, lastTimeConnected : Date)
{
self.userID = userID
self.lastTimeConnected = lastTimeConnected
}
然后,我通过调用将视图添加到UIViewController
imageView.addSubview(pinViewInstance) in a loop
我有一些事件会触发我的视图在屏幕上移动。我打电话给数据库以获取新职位,然后需要对其进行更新。如何在自定义视图上使用userID进入视图?我会使用标签,但它们只是INT,我需要比这大得多的东西。否则,我需要将标签映射到我真正要避免的用户ID。
要清楚...我知道我可以这样做:
让pinViewInstance = self.view.viewWithTag(numberHere)为? pinView
但是我想要通过ID访问它,这是我首先扩展UIView类的第一个原因。
我希望您知道解决该问题的方法已经停留了一段时间,并且看不到解决方法。非常感谢您的帮助。
谢谢!
最佳答案
两种选择:
一个:通过UIImageView.subviews的for循环进行迭代,这些自定义视图已添加到这些子视图中。将每个视图设置为pinView引用,并在其中比较userID。
func getPinView(userId: String) -> (pinView?) {
for view in self.imageView.subviews as [UIView] {
if let pin = view as? pinView {
if pin.userID == userId {
return pin
}
}
}
return nil
}
二:,当您添加pinView时,将它们添加到以userId为键的字典中。并且当您需要pinView时。通过密钥获取:
// init
var pinViews: [String: pinView] = [:]
// after adding subview
pinViews[pinViewInstance.userID] = pinViewInstance
// get pinView
let pin: pinView = pinViews[userID] as! pinView
关于ios - 如何在不使用标签方法的情况下访问UIView,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42660498/