2017-09-26 8 views
0

私は自分のアプリケーションのためのいくつかの税関の移行を行っていると私は問題を提示クラスの移行代理人に自己インスタンスを渡している。私はプロトコルのメソッドが実行されていないので、問題がインスタンスに関連していることを知っています。クラスのインスタンスを渡す

私は何かが不足していると推測しますが、何かを見つけることができません。

のViewController

class ViewController: UICollectionViewController, UICollectionViewDelegateFlowLayout { 

    let detailVC = DetailVC() 
    let animationController = AnimationController() 

    override func viewDidLoad() { 
     super.viewDidLoad() 
     collectionView?.delegate = self 
     collectionView?.dataSource = self 

     detailVC.transitioningDelegate = self 

     collectionView?.register(ControllerCell.self, forCellWithReuseIdentifier: "klk") 
     collectionView?.isPagingEnabled = false 
     collectionView?.contentInset = UIEdgeInsets(top: 0, left: 80, bottom: 0, right: 10) 
     let layout = collectionView?.collectionViewLayout as? UICollectionViewFlowLayout 
     layout?.scrollDirection = .horizontal 

    } 

    override func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int { 
     return 5 
    } 

    override func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell { 
     let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "klk", for: indexPath) as! ControllerCell 
     return cell 
    } 

    func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize { 
     return CGSize(width: view.frame.width * 0.6, height: view.frame.height * 0.5) 
    } 

    func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumLineSpacingForSectionAt section: Int) -> CGFloat { 
     return 100 
    } 


    override func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) { 
     let cell = collectionView.cellForItem(at: indexPath) 
     animationController.originFrame = cell?.frame 
     present(DetailVC(), animated: true, completion: nil) 
    } 

} 

extension ViewController: UIViewControllerTransitioningDelegate { 

    func animationController(forPresented presented: UIViewController, presenting: UIViewController, source: UIViewController) -> UIViewControllerAnimatedTransitioning? { 
     return animationController 
    } 
} 

DetailVC

class DetailVC: UIViewController { 

    var cellFrame: CGRect? 

    let label: UILabel = { 
     let lbl = UILabel() 
     lbl.textColor = .white 
     lbl.text = "Quitar" 
     lbl.frame = CGRect(x: 10, y: 10, width: 100, height: 100) 
     lbl.isUserInteractionEnabled = true 
     return lbl 
    }() 

    override func viewDidLoad() { 
     super.viewDidLoad() 
     view.addSubview(label) 
     view.backgroundColor = .blue 
     label.addGestureRecognizer(UITapGestureRecognizer(target: self, action: #selector(dismissing))) 
    } 

    func dismissing() { 
     dismiss(animated: true, completion: nil) 
    } 


} 
+0

を代わりにDetailVC()detailVCを使用する必要があると思いますか?私はあなたが 'DetailVC()'の代わりにこの文 'present(DetailVC()、animated:true、completion:nil)'を使用する必要があると思います。 – 3stud1ant3

+0

@ 3stud1ant3私は何かが欠けていたことを知っています。はい、それは問題でした、ありがとう! –

答えて

1

あなたはdetailVCにデリゲートを設定していると、あなたは、あなたのデリゲートメソッドが呼び出されていない理由は、新しいインスタンスを提示しています。

だから私はあなたがストーリーボードを使用しています。この文でpresent(DetailVC(), animated: true, completion: nil)

関連する問題