将一个scrollView
和两个视图控制器连接到scrollView
现在我想访问一个View Controllers类到包含scrollView的类的方法。所以我可以使用方法scrollViewDidEndDeclerating
。如果我在同一个班级中尝试scrollViewDidEndDeclerating
,它将无法执行。但如果我试图覆盖该方法。我得到一个致命的错误。
包含ScrollView的类的代码
import UIKit
class ViewController: UIViewController , UIScrollViewDelegate {
@IBOutlet weak var scrollVieww: UIScrollView!
var mainRead : Bool = false
override func viewDidLoad() {
super.viewDidLoad()
self.scrollVieww.pagingEnabled = true
self.scrollVieww.delegate = self
// Do any additional setup after loading the view, typically from a nib.
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))
}
func scrollViewDidEndDecelerating(scrollView: UIScrollView) {
if(scrollView.contentOffset.x == self.view.frame.size.width * 1 && !mainRead){
mainRead = true
// if i execute this i get a fatal error in the animate method in the class Main_Screen
let storyboard = UIStoryboard(name: "Main", bundle: nil)
if let vc = storyboard.instantiateViewControllerWithIdentifier("MainScreen") as? Main_Screen {
vc.animate()
}
}
}
现在是Home_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 weak 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)
}
我无法使用viewWillAppear
方法的viewDidAppear
,因为这是viewController
中的第二个storyboard
。
答案 0 :(得分:0)
该行
storyboard.instantiateViewControllerWithIdentifier("MainScreen") as? Main_Screen
正在创建视图控制器的新实例,而不是找到已存在的视图控制器。
如果您需要在兄弟ViewControllers之间进行通信,则需要从其父ViewController设置连接。