i've added an UIPageController
in my application. I populate it from rest services and then when click one of page, it will goes directly to latest one. I'm missing something but what i cant solve. How can i make for get selected one instead of latest.
let tapGesture = UITapGestureRecognizer(target: self, action: #selector(self.FikirClick))
for item in self.ArrayList {
say = say + 1
self.frameFikirImage.origin.x = self.FikirscrollView.frame.size.width * CGFloat(say) + 10
self.frameFikirImage.origin.y = 55
self.imgFikirImage = UIImageView(frame: self.frameFikirImage)
self.FikirscrollView.tag = item.id as! Int
tapGesture.view?.tag = item.id as! Int
self.imgFikirImage.sd_setImage(with: URL(string: item.picture!))
self.imgFikirImage.contentMode = UIView.ContentMode.scaleAspectFit
self.FikirscrollView.addSubview(self.imgFikirImage)
self.frameFikirText.origin.x = self.FikirscrollView.frame.size.width * CGFloat(say) + 25
self.frameFikirText.origin.y = 190
self.lblFikir = UILabel(frame: self.frameFikirText)
self.lblFikir.tintColor = UIColor.white
self.lblFikir.text = item.adi
self.lblFikir.font = self.lblFikir.font.withSize(20)
self.FikirscrollView.addSubview(self.lblFikir)
self.frameFikirButton.origin.x = self.FikirscrollView.frame.size.width * CGFloat(say) + 20
self.frameFikirButton.origin.y = 140
self.FikirscrollView.addGestureRecognizer(tapGesture)
}
self.FikirscrollView.contentSize = CGSize(width:self.FikirscrollView.frame.size.width * pageControlFikir,height: self.FikirscrollView.frame.size.height)
@objc func FikirClick(sender: UITapGestureRecognizer) {
var tag = sender.view!.tag
print(tag);
}
The gesture need to be inside the for loop
let tapGesture = UITapGestureRecognizer(target: self, action: #selector(self.FikirClick))
As it's for 1 view at a time so it's added to the last 1 when you click var tag = sender.view!.tag
with tapGesture.view?.tag = item.id as! Int
update to last tag of the loop
Also make sure
self.imgFikirImage.addGestureRecognizer(tapGesture)
and enable userinteration for the imageview