Я создаю пользователя и регистрирую пользователя после использования SDK для Facebook. Все так же, как и при правильной установке пользователя в базу данных. Затем я хочу представить предупреждение и после отклонения предупреждения, я хочу загрузить другую раскадровку (по существу, в главное меню).Попытка представить ViewController, который уже представляет (0)
Теперь я понимаю, что проблема связана с потоками. НО .. Я передаю загрузку раскадровки и т. Д. В качестве блока для предупреждения. Поэтому не следует ли его вызывать только после того, как пользователь отклонит предупреждение? Я также попытался заставить его работать по основной теме (что было упомянуто here), но я все еще получаю ошибку.
Что мне здесь не хватает?
The originating call:
if DBUser.insertDictionary(user.getModelAsStringDictionary()) {
if DBUser.loginUserWithFacebookId(facebookId!){
self.accountCreatedAlert()
}else{
//log error, user could not be logged in.
}
}else{
// log error user account could not be inserted into the database
}
}
Асинхронный комплектации предупредительного текста и метода switchToMainStoryboard():
private func accountCreatedAlert(fn:()){
let asyncMoveToMain = {dispatch_async(dispatch_get_main_queue()) {
self.switchToMainStoryboard()
}}
self.showAlert("You will now be logged in", title: "Account created", fn: asyncMoveToMain)
}
настороже:
func showAlert(text : NSString, title : NSString, fn:()->Void){
var alert = UIAlertController(title: title, message: text, preferredStyle: UIAlertControllerStyle.Alert)
alert.addAction(UIAlertAction(title: "OK", style: UIAlertActionStyle.Default, handler: nil))
UIApplication.sharedApplication().delegate?.window!?.rootViewController?.presentViewController(alert, animated: true, completion: fn)
}
А где раскадровка загружается:
func switchToMainStoryboard() ->Void{
let main = UIStoryboard(name: "Main", bundle: nil)
var viewController = main.instantiateInitialViewController() as UIViewController
viewController.modalTransitionStyle = UIModalTransitionStyle.CoverVertical
self.presentViewController(viewController, animated: true, completion: nil)
}