2017-03-07 3 views
1

Mein Code ist eine Uiscrolview mit zwei Seiten und einer Schaltfläche. Das Problem ist, dass wenn ich auf der View-Controller-Info bin (mittleres Bild). Klicken Sie dann auf die Schaltfläche, um zurück zum Scrollview zu gelangen. Es kehrt zurück zur Seite 1. Egal, was von der Info-Folie zur Scrollansicht geht, es geht immer zurück zur Ansicht von Controller 1 und der Loop wird zurückgesetzt. Wenn ich auf VC 2 bin, drücken Sie die Info-Taste, um zur Info-Folie zu gehen. Wenn ich den Knopf auf der Info-Folie drücke, möchte ich zu VC 2 zurückkehren. Mein Code ist unten. Im Prinzip wird die Schleife immer zurückgesetzt, ich möchte das beheben, wenn möglich.loop resetting in scrollview (swift3)

page one

enter image description here

enter image description here

import UIKit 

class ViewController: UIViewController, UIScrollViewDelegate { 

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

override func viewDidLoad() { 
    super.viewDidLoad() 

    slideScrollView.delegate = self 


    let slides:[slide] = createSlides() 
    setupSlideScrollView(slides: slides) 
    pageControl.numberOfPages = slides.count 
    pageControl.currentPage = 0 
    view.bringSubview(toFront: pageControl) 



} 
override var prefersStatusBarHidden: Bool { 
    return true 
} 

func createSlides() -> [slide]{ 
    let slide1:slide = Bundle.main.loadNibNamed("slide", owner: self, options: nil)?.first as! slide 
    slide1.label.text = "1" 






    let slide2:slide = Bundle.main.loadNibNamed("slide", owner: self, options: nil)?.first as! slide 
    slide2.label.text = "2" 






    return [slide1,slide2 ] 
} 

func setupSlideScrollView(slides:[slide]) { 
    slideScrollView.frame = CGRect(x: 0, y: 0, width: view.frame.width, height: view.frame.height) 
    slideScrollView.contentSize = CGSize(width: view.frame.width * CGFloat(slides.count), height: view.frame.height) 

    for i in 0..<slides.count{ 
     slides[i].frame = CGRect(x: view.frame.width * CGFloat(i), y: 0, width: view.frame.width, height: view.frame.height) 
     slideScrollView.addSubview(slides[i]) 
     slideScrollView.isPagingEnabled = true 

    } 
} 

func scrollViewDidScroll(_ scrollView: UIScrollView) { 
    let pageIndex = round(scrollView.contentOffset.x/view.frame.width) 
    pageControl.currentPage = Int(pageIndex) 

}} 
+0

Warum werden drei große Bilder zwischen Text und Codezeilen eingefügt? Musst du wirklich Leute in dieser Größe sehen? –

+0

Fügen Sie den Code der Tastenaktion des Info-Controllers hinzu. –

Antwort

0

Das klingt wie ein ViewWillAppear oder ViewWillAppear Problem, wenn Sie irgendetwas in diesen Funktionen setzen.

+0

Ich verstehe nicht, wie das helfen wird. –

+0

Wenn Sie zum viewController zurückkehren, der die scrollView enthält, werden diese beiden Funktionen automatisch aufgerufen, wenn Sie sie implementiert haben. Wenn Sie also irgendeinen scrollView-Code in einem von ihnen erstellt haben, wird er zurückgerufen, wenn Sie zurückgehen –

+0

Was zu tun ist, wird nslayout constraints verwenden und sie verwenden, um die Info-Folie zu erweitern. Auf diese Weise werde ich nicht die View-Controller wechseln. –