【问题标题】:How to pass images to a NewViewController from ScrollView with Page Control in Swift如何在 Swift 中使用 Page Control 将图像从 ScrollView 传递到 New ViewController
【发布时间】:2017-09-21 21:30:57
【问题描述】:

我正在尝试使图像可点击并将它们传递给具有更多详细信息的新视图控制器。我在 HomeViewController 中使用 UIScrollView 和 UIPageController。 我试图研究,但找不到任何具体的例子。我在想也许可以通过 segue 传递它,但我不知道如何。欢迎任何想法。提前致谢。这是我的代码:

class HomeViewController: UIViewController, UIScrollViewDelegate {

@IBOutlet var pageControl: UIPageControl!
@IBOutlet var topScrollView: UIScrollView!

 override func viewDidLoad() {
    super.viewDidLoad()

    pageScrollView()

   }

func pageScrollView() {

    self.topScrollView.isUserInteractionEnabled = true
    self.topScrollView.addGestureRecognizer(UITapGestureRecognizer())

    self.topScrollView.frame = CGRect(x: 0, y: 0, width: view.frame.size.width, height: 200)
    let scrollViewWidth:CGFloat = self.topScrollView.frame.width
    let scrollViewHeight:CGFloat = self.topScrollView.frame.height


    let imgOne = UIImageView(frame: CGRect(x:0, y:0,width:scrollViewWidth, height:scrollViewHeight))
    imgOne.image = UIImage(named: "img1")        
    let imgTwo = UIImageView(frame: CGRect(x:scrollViewWidth, y:0,width:scrollViewWidth, height:scrollViewHeight))
    imgTwo.image = UIImage(named: "img2")
    let imgThree = UIImageView(frame: CGRect(x:scrollViewWidth*2, y:0,width:scrollViewWidth, height:scrollViewHeight))
    imgThree.image = UIImage(named: "img3")
    let imgFour = UIImageView(frame: CGRect(x:scrollViewWidth*3, y:0,width:scrollViewWidth, height:scrollViewHeight))
    imgFour.image = UIImage(named: "img4")
    let imgFive = UIImageView(frame: CGRect(x:scrollViewWidth*4, y:0,width:scrollViewWidth, height:scrollViewHeight))
    imgFive.image = UIImage(named: "img5")


    self.topScrollView.addSubview(imgOne)
    self.topScrollView.addSubview(imgTwo)
    self.topScrollView.addSubview(imgThree)
    self.topScrollView.addSubview(imgFour)
    self.topScrollView.addSubview(imgFive)

    self.topScrollView.contentSize = CGSize(width:self.topScrollView.frame.width * 5, height:self.topScrollView.frame.height)
    self.pageControl.currentPage = 0

  }

    func scrollViewDidEndDecelerating(_ scrollView: UIScrollView) {

    let pageWidth:CGFloat = scrollView.frame.width
    let currentPage:CGFloat = floor((scrollView.contentOffset.x-pageWidth/2)/pageWidth)+1

    // Change the indicator
    self.pageControl.currentPage = Int(currentPage)


   }
}

【问题讨论】:

    标签: swift uiscrollview uipagecontrol


    【解决方案1】:

    我想通了。希望它可以帮助别人。我补充说:

    @objc var imgOne = UIImageView()
    @objc var imgTwo = UIImageView()
    @objc var imgThree = UIImageView()
    @objc var imgFour = UIImageView()
    @objc var imgFive = UIImageView()
    
       @objc func imageTapped(_sender:UITapGestureRecognizer) {
    
         let vc = self.storyboard?.instantiateViewController(withIdentifier: "DetailsMapsViewController") as! DetailsMapsViewController
         vc.restaurantMaps = self.restaurantArray[_sender.view!.tag]
         self.navigationController?.pushViewController(vc, animated: true)
    }
    
        imgOne.addGestureRecognizer(UITapGestureRecognizer(target: self, action: #selector(HomeViewController.imageTapped)))
        imgTwo.addGestureRecognizer(UITapGestureRecognizer(target: self, action: #selector(HomeViewController.imageTapped)))
        imgThree.addGestureRecognizer(UITapGestureRecognizer(target: self, action: #selector(HomeViewController.imageTapped)))
        imgFour.addGestureRecognizer(UITapGestureRecognizer(target: self, action: #selector(HomeViewController.imageTapped)))
        imgFive.addGestureRecognizer(UITapGestureRecognizer(target: self, action: #selector(HomeViewController.imageTapped)))
    
        imgOne.tag = 0
        imgTwo.tag = 1
        imgThree.tag = 2
        imgFour.tag = 3
        imgFive.tag = 4
    

    【讨论】:

      猜你喜欢
      • 2016-03-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-03-03
      • 2017-11-08
      • 2015-03-19
      • 2016-01-05
      相关资源
      最近更新 更多