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