2016-03-31 12 views
0

私はUIScrollViewを最大2個のView Controllerにフックしました。このように別のクラスの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 Delegateメソッドを使用できます。

今私はクラス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の委任の方法文句を言わない実行。私は上記のアニメーション機能を実行したいとあなたはおそらくそれを逃しUIScrollViewのデリゲートとして

self.scrollVieww.delegate = self; 

をあなたのビューコントローラを割り当てる必要がありますscrollViewDidEndDeclerating法に

答えて

0

を私はViewControllerをでそれを行うことができますが、私はカント。 あなたはviewDidLoadの中でそれを作ることができます

+0

私はそれを行いましたが、そのクラスのメソッドにしかアクセスできず、読みやすいようにコードを切り出しました。 –

関連する問題