在另一个类中访问ScrollView Delegate方法

时间:2016-03-31 18:18:21

标签: ios swift uiscrollview

我有一个UIScrollView最多可以连接2个视图控制器。像这样

 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 Delegate的方法不会执行。我可以在ViewController中做到但我不能因为我想在scrollViewDidEndDeclerating方法

上运行animate函数

1 个答案:

答案 0 :(得分:0)

您必须将视图控制器指定为UIScrollView委托

self.scrollVieww.delegate = self;
你可能会错过它。 你可以在viewDidLoad中找到它