2016-02-25 2 views
0

Я хотел бы передать массив другому ViewController при нажатии кнопки «Далее» в окне alertview.Добавление prepareForSegue в UIAlertAction

userInformation += [userName, userGender, String(userAge), String(userHeight), String(userWeight)] 

let alert = UIAlertController(title:"Confirmation", message: confirmationMessage, preferredStyle: UIAlertControllerStyle.Alert) 

let confirmBtn : UIAlertAction = UIAlertAction(title: "Next", style: UIAlertActionStyle.Default, handler: {(action:UIAlertAction!)-> Void in 

    let vc = (self.storyboard?.instantiateViewControllerWithIdentifier("toPerInfo"))! as UIViewController 

    print(self.userInformation) 

    self.showDetailViewController(vc, sender: self) 

}) 

let cancelBtn : UIAlertAction = UIAlertAction(title: "Cancel", style: UIAlertActionStyle.Cancel, handler: nil) 

    alert.addAction(cancelBtn) 
    alert.addAction(confirmBtn) 

    self.presentViewController(alert, animated: true, completion: nil) 

и вот perpareForSegue

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { 
     var destViewController: PersonalInformation = segue.destinationViewController as! PersonalInformation 
     var arrayToSegue: [String] = self.userInformation 
     destViewController.useInfo = arrayToSegue 
    } 

Я хотел бы поставить perpareForSegue в кнопку "Далее". Как мне изменить мой код .. я не мог найти другие подобные вопросы ...

ответ

0

prepareForSegue Метод фактически сделал, чтобы настроить или передавать данные на новый контроллер представления, как написано в UIViewControllerdocumentation:

По умолчанию реализация этого метода ничего не делает. Подклассы переопределяют этот метод и используют его для настройки нового контроллера представления до его отображения. Объект segue содержит информацию о переходе, включая ссылки на оба рассматриваемых контроллера.


Если вы действительно хотите, вы можете нажать вручную контроллер PersonalInformation вид:

let storyboard = UIStoryboard(name: "StoryboardName", bundle: nil) 
let destVC = storyboard.instantiateViewControllerWithIdentifier("PersonalInformationId") as! PersonalInformation 
var arrayToSegue: [String] = self.userInformation 
destVC = arrayToSegue 

// present or push, as you wish 
presentViewController(destVC, animated: true, completion: nil) 
+0

или есть ли способ я могу передать данные без Segue? – chiefpika

+0

Вы можете использовать ручной push или подарок, как в моем примере. Но вы должны использовать его либо вручную (вызов push или present methods), либо использование segue. –