Прокрутите до определенного слайда / веб-сайта при нажатии кнопки - PullRequest
0 голосов
/ 26 февраля 2019

У меня есть установочные слайды, которые загружают разные сайты.В принципе, вы можете проводить пальцем влево и вправо для просмотра различных веб-сайтов, но я не могу понять, как перейти к определенному слайду / веб-сайту при нажатии кнопки.

Здесь загружаются веб-сайты. Настройка прокрутки:

func loadWebsites() -> [Website] {
    let url1 = URL(string: "https://www.nike.com")
    let request1 = URLRequest(url: url1!)
    let url2 = URL(string: "https://www.finishline.com")
    let request2 = URLRequest(url: url2!)
    let url3 = URL(string: "https://www.eastbay.com")
    let request3 = URLRequest(url: url3!)
    let url4 = URL(string: "https://www.flightclub.com")
    let request4 = URLRequest(url: url4!)
    let url5 = URL(string: "https://www.footaction.com")
    let request5 = URLRequest(url: url5!)

    let website1:Website = Bundle.main.loadNibNamed("Website", owner: self, options: nil)?.first as! Website
    website1.webView.load(request1)
    website1.webView.navigationDelegate = self

    let website2:Website = Bundle.main.loadNibNamed("Website", owner: self, options: nil)?.first as! Website
    website2.webView.load(request2)
    website2.webView.navigationDelegate = self

    let website3:Website = Bundle.main.loadNibNamed("Website", owner: self, options: nil)?.first as! Website
    website3.webView.load(request3)
    website3.webView.navigationDelegate = self

    let website4:Website = Bundle.main.loadNibNamed("Website", owner: self, options: nil)?.first as! Website
    website4.webView.load(request4)
    website4.webView.navigationDelegate = self

    let website5:Website = Bundle.main.loadNibNamed("Website", owner: self, options: nil)?.first as! Website
    website5.webView.load(request5)
    website5.webView.navigationDelegate = self

    return [website1, website2, website3, website4, website5]
}

func setupWebsiteScrollView(websites : [Website]) {
    scrollView.frame = CGRect(x: 0, y: 0, width: view.frame.width, height: view.frame.height)
    scrollView.contentSize = CGSize(width: view.frame.width * CGFloat(websites.count), height: view.frame.height)
    scrollView.isPagingEnabled = true
    scrollView.contentInsetAdjustmentBehavior = .never

    for i in 0 ..< websites.count {
        websites[i].frame = CGRect(x: view.frame.width * CGFloat(i), y: 0, width: view.frame.width, height: view.frame.height)
        scrollView.addSubview(websites[i])
    }
}

Не могу понять код, чтобы перейти на определенный слайд / сайт.Функция buttononeAction должна переводить пользователя на первый слайд.

@objc func buttononeAction(_ sender: UIButton!) {
   //Code here
}

Ответы [ 2 ]

0 голосов
/ 26 февраля 2019

Прежде всего, я бы порекомендовал вместо этого использовать UIPageViewController, но при использовании scrollview вам нужно изменить contentOffset для scrollView:

let indexYouWantToScrollTo = 0
scrollView.setContentOffset(CGPoint(x: CGFloat(indexYouWantToScrollTo) * view.frame.width, y: 0), animated: true)
0 голосов
/ 26 февраля 2019

Вам необходимо отслеживать, на какую страницу загружается конкретный веб-сайт.Тогда вы можете использовать этот метод:

func scrollToPage(page: Int, animated: Bool) {
    var frame: CGRect = self.scrollView.frame
    frame.origin.x = frame.size.width * CGFloat(page)
    frame.origin.y = 0
    self.scrollView.scrollRectToVisible(frame, animated: animated)
}


@objc func buttononeAction(_ sender: UIButton!) {
   //Code here
   //Make sure you add some sort of validation to check if page exist. Otherwise, application will crash.
   self.scrollToPage(page: 1, animated: true)
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...