Luai Kalkatawi
Luai Kalkatawi

Reputation: 1492

Swift Protocol delegation not working

I have a viewController that has a containerView with pageView. Once I slide a view from the pageView I want to call a function in the viewController I have tried with my code below but it is calling buttonMaskColor please where would be my issue?

class PlaceMenuDetailsViewController: UIViewController, PageViewSliderDelegate {

    override func viewDidLoad() {
        super.viewDidLoad()

        detailsButton.pageDelegation = self
    }

    func buttonMaskColor(){
        println("delegate work")
    }
}

class DetailPageViewController: UIPageViewController, UIPageViewControllerDelegate, UIPageViewControllerDataSource {

    weak var pageDelegation:PageViewSliderDelegate?

func pageViewController(pageViewController: UIPageViewController, viewControllerAfterViewController viewController: UIViewController) -> UIViewController? {

    pageDelegation?.buttonMaskColor()

    var page = (viewController as! PageDelegate).pageNumber + 1
    return viewControllerForPage(page)
}

Upvotes: 0

Views: 450

Answers (1)

Firas
Firas

Reputation: 1752

You should assign self to pageDelegation in your prepareForSegue function in your mainView after giving and identifier for the embed segue like this:

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {

    if segue.identifier == "embedSegueIdentifier" {

        let distinationVC = segue.destinationViewController as? DetailPageViewController

        distinationVC?.pageDelegation = self

    }

}

Upvotes: 2

Related Questions