2015-12-04 1 views
0

Итак, на моем первом экране моего приложения iOS у меня есть кнопка «Вход» и кнопка «SignUp With Facebook». Первые две кнопки ссылаются на свои собственные контроллеры зрения просто отлично, и после входа в симуляторе будет автоматически регистрировать их с:Facebook-подписчик использует неправильный segue внутри оператора if - Swift

if PFUser.currentUser() != nil { 

     self.performSegueWithIdentifier("autoSegue", sender: self) 

      } else { 

код, который вы можете увидеть в нижней части полного блока кода ниже. Тем не менее, подписка на Facebook я хочу перейти на отдельный контроллер представления, где я могу показать им свой профиль pic, захватить данные в Parse, заставить их ввести имя пользователя, а затем перейти к тому же контроллеру представления, что и SignUp и Login - autoSegue. У меня есть весь код на этом контроллере представления, который уже выписан, но моя проблема в том, что, когда они нажимают кнопку регистрации для Facebook, она берет их через autoSegue, а не в fbSignup segue (тот, который ссылается на то, где я хочу захватить FB). Оба segues связаны непосредственно с контроллером представления (а не с самими кнопками), и я не получаю ошибок сборки. Я ценю любую помощь.

Спасибо!

Полный код:

import UIKit 

import Parse 

import MediaPlayer 

import FBSDKCoreKit 







class ViewController: UIViewController { 

    @IBOutlet var loginAlpha: UIButton! 

    @IBOutlet var signupAlpha: UIButton! 




    var avPlayer: AVPlayer! 

    var avPlayerLayer: AVPlayerLayer! 

    var paused: Bool = false 





    @IBAction func facebookSignup(sender: AnyObject) { 



     let permissions = ["public_profile"] 



     PFFacebookUtils.logInInBackgroundWithReadPermissions(permissions) { (user: PFUser?, error: NSError?) -> Void in 



      if let error = error { 



       print(error) 



      } else { 



       if let user = user { 



        self.performSegueWithIdentifier("fbSignup", sender: self) 

       } 





      } 





     } 







    } 

    override func viewDidLoad() { 

     super.viewDidLoad() 




     // code for background video 



       let theURL = NSBundle.mainBundle().URLForResource("test", withExtension: "mp4") 



       avPlayer = AVPlayer(URL: theURL!) 

       avPlayerLayer = AVPlayerLayer(player: avPlayer) 

       avPlayerLayer.videoGravity = AVLayerVideoGravityResizeAspectFill 

       avPlayer.volume = 0 

       avPlayer.actionAtItemEnd = AVPlayerActionAtItemEnd.None 



       avPlayerLayer.frame = view.layer.bounds 

       view.backgroundColor = UIColor.clearColor(); 

       view.layer.insertSublayer(avPlayerLayer, atIndex: 0) 



       NSNotificationCenter.defaultCenter().addObserver(self, 

        selector: "playerItemDidReachEnd:", 

        name: AVPlayerItemDidPlayToEndTimeNotification, 

        object: avPlayer.currentItem) 

      } 



      func playerItemDidReachEnd(notification: NSNotification) { 

       let p: AVPlayerItem = notification.object as! AVPlayerItem 

       p.seekToTime(kCMTimeZero) 

      } 



      override func viewDidAppear(animated: Bool) { 



       if PFUser.currentUser() != nil { 



        self.performSegueWithIdentifier("autoSegue", sender: self) 

       } else { 







       signupAlpha.alpha = 0 

       loginAlpha.alpha = 0 



       UIView.animateWithDuration(1.5, delay: 1.0, options: [], animations: {() -> Void in 

        self.signupAlpha.alpha = 1.0 

        self.loginAlpha.alpha = 1.0 



        }, completion: nil) 



        avPlayer.play() 

        paused = false 

      } 

    } 



      override func viewDidDisappear(animated: Bool) { 

       avPlayer.pause() 

       paused = true 

      } 







    override func didReceiveMemoryWarning() { 

     super.didReceiveMemoryWarning() 

     // Dispose of any resources that can be recreated. 

} 

} 

ответ

0

Вы используете раскадровки? Возможно, вы столкнулись с раскадрой и подключили segue к неправильному ViewController.

Я не вижу ничего плохого в вашем коде.

+0

Я. Я использовал основную раскадровку для создания всего, и ctrl перетащил с главного контроллера (желтую точку сверху) на другие контроллеры представлений, которые я хотел переписать (autoSegue и fbSignup), и выбрал «Show». Могу ли я сделать 2 segues, как это из того же источника? Это где я испортил? Должен ли я поставить fbSignup segue на кнопку вместо контроллера вида? – PsYcHoSiD

Смежные вопросы