简体   繁体   中英

Segue not running after MPC viewcontroller is dismissed

I have an action tied to pop up the MPC view controller however once this action is complected and the browser is dismissed I simply am lead back to my old view controller

func browserViewControllerDidFinish(
browserViewController: MCBrowserViewController!)  {
    // Called when the browser view controller is dismissed (ie the Done
    // button was tapped)
    func seguetoJoin(segue: UIStoryboardSegue, sender: AnyObject?) {
        var joinView: playMusicViewController = segue.destinationViewController as! playMusicViewController
         weak var delegate: MCBrowserViewControllerDelegate!

    }

    self.dismissViewControllerAnimated(true, completion: nil)

}

You seem to be calling dismissViewController on the VC that is receiving the didFinish callback.

You should move the segue code to the ViewController that needs to perform the segue, rather than performing it on a ViewController that is being dismissed.

Also, these are unused

var joinView: playMusicViewController = segue.destinationViewController as! playMusicViewController
weak var delegate: MCBrowserViewControllerDelegate!

Update -

Following the comments below.

in mpcSubClass.m var viewControllerToPeformSegue: UIViewController!

func browserViewControllerDidFinish(browserViewController: MCBrowserViewController!)  {
    // animation:false as your segue will have an animation
    self.dismissViewControllerAnimated(false, completion: nil)
    self.viewControllerToPerformSegue.handleBrowserDidFinish()
}

in viewControllerToPerformSegue.m

// when you initialise the MPC VC subclass
mpcVCSubclass.viewControllerToPerformSegue = self

func handleBrowserDidFinish()
{
     self.performSegueWithIdentifier("mainViewSegue", sender: self)
}

override func prepareForSegue(segue: UIStoryboardSegue!, sender: AnyObject!) 
{
     if segue.identifier == "mainViewSegue"
    {
        let mainVC = segue.destination as! MainVC
        // now pass any data to your main VC that it can load in viewWillAppear
    }
}

in storyboard

link viewControllerToPerformSegue to the MainVC and name the segue mainViewSegue

Hope this helps.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM