2016-03-31 32 views
0

我有一個UIScrollView掛鉤到2個視圖控制器。像這樣在另一個類中訪問ScrollView委託方法

let V1 = self.storyboard?.instantiateViewControllerWithIdentifier("HomeScreen") as UIViewController! 
    //Add initialized view to main view and its scroll view and also set bounds 
    self.addChildViewController(V1) 
    self.scrollVieww.addSubview(V1.view) 
    V1.didMoveToParentViewController(self) 
    V1.view.frame = scrollVieww.bounds 

    //Initialize using Unique ID for the View 
    let V2 = self.storyboard?.instantiateViewControllerWithIdentifier("MainScreen") as UIViewController! 
    //Add initialized view to main view and its scroll view also set bounds 
    self.addChildViewController(V2) 
    self.scrollVieww.addSubview(V2.view) 
    V2.didMoveToParentViewController(self) 
    V2.view.frame = scrollVieww.bounds 

    //Create frame for the view and define its urigin point with respect to View 1 
    var V2Frame: CGRect = V2.view.frame 
    V2Frame.origin.x = self.view.frame.width 
    V2.view.frame = V2Frame 

    //The width is set here as we are dealing with Horizontal Scroll 
    //The Width is x3 as there are 3 sub views in all 
    self.scrollVieww.contentSize = CGSizeMake((self.view.frame.width) * 2, (self.view.frame.height)) 

現在我可以使用該類中編寫的ScrollView委託方法。

所以,現在我去了我的課Main_Screen和UIScrollViewDelegate的子類。

代碼Main_Screen類

import UIKit 

public class Main_Screen: UIViewController , UIScrollViewDelegate { 

    @IBOutlet weak var aboutMebtn: UIButton! 
    @IBOutlet weak var studybtn: UIButton! 
    @IBOutlet weak var appsbtn: UIButton! 
    @IBOutlet weak var skillsbtn: UIButton! 

    var scrollView : UIScrollView! 

    @IBOutlet var avatarImageView: UIImageView! 

    weak var pageControl: UIPageControl! 

    var mainRead : Bool = false 

    override public func viewDidLoad() { 
     super.viewDidLoad() 

    // Do any additional setup after loading the view. 
     // Making the view round 
     for v : UIView in self.view.subviews { 
      if v.tag != 1 { 
       v.layer.cornerRadius = v.frame.size.width/2 
       v.layer.masksToBounds = true 
      } 
     } 


    } 

    public func animate(){ 
     // I get a fatal error here 
     var buttons : Array<UIButton> = [aboutMebtn , studybtn , appsbtn , skillsbtn] 

     avatarImageView.alpha = 0.0 
     avatarImageView.transform = CGAffineTransformMakeScale(1.25, 1.25) 

     UIView.animateWithDuration(1.0, delay: 1.0, usingSpringWithDamping: 1.0, initialSpringVelocity: 0.0, options: .CurveEaseIn, animations: {() -> Void in 
      self.avatarImageView.alpha = 1.0 
      self.avatarImageView.transform = CGAffineTransformMakeScale(0.75, 0.75) 
      }, completion: nil) 

} 

    public func scrollViewDidEndDecelerating(scrollView: UIScrollView) { 
     if(scrollView.contentOffset.x == self.view.frame.size.width * 1){ 
      print("Main is read") 
     } 

    } 

但UIScrollView的委託方法不會執行。我能做到這一點在視圖控制器,但我不能,因爲我想在scrollViewDidEndDeclerating方法

回答

0

上面跑的動畫功能,您必須指定您的視圖控制器UIScrollView的委託

self.scrollVieww.delegate = self; 

你可能會錯過它。 你可以讓它在裏面viewDidLoad

+0

我已經做到了..但是然後我可以訪問該類中的方法,我已經刪除了代碼,所以它很容易閱讀。 –

相關問題