2015-04-15 2 views
0

Я не уверен, как это сделать вообще. Пришел близко, но ничего не появляется на экране. Я хочу перейти от элемента управления alert к новому представлению, когда нажата кнопка в представлении предупреждения. Проблема в том, что я не думаю, что у меня может быть идентификатор, потому что мне нужно, чтобы он был подключен к кнопке, которая используется для игры. Поэтому я считаю, что лучше всего, чтобы он программно перешел от контроллера предупреждения к следующему виду без и идентификатора. Кто-нибудь знает, как это сделать?Как переходить к новому виду с помощью программного обеспечения alertcontroller

let alertController: UIAlertController = UIAlertController(title: "You Finished!", message: "Congratulations for finishing the game! Now all thats left is to email us so we can contact you.", preferredStyle: .Alert) 
     let nextAction = UIAlertAction(title: "Email", style: .Default) { 
      action -> Void in 
      let secondvc = EmailViewController (nibName: "EmailViewController", bundle: nil) 
      let navController = UINavigationController(rootViewController: secondvc) 
      self.presentViewController(EmailViewController(), animated: true, completion: nil) 
     } 

     alertController.addAction(nextAction) 

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

} 

} 

ответ

0
self.presentViewController(EmailViewController(), animated: true, completion: nil) 

должен быть

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

Я думаю, что вы поставили неправильный контроллер там, потому что NavController бесполезно (не используется) в исходном коде.

+0

Я получаю ошибку теперь для резьбы 1:.. SIGABRT 12 top_Level_Code любой идеи, что это может быть –

+0

не могли бы вы дать мне скриншот? о чем ошибка указывает или что-то еще? –

+0

ошибка указывает на класс AppDelegate: UIResponder, UIApplicationDelegate –

0

Любая конкретная причина, по которой вы используете наконечники вместо того, чтобы загружать контроллер вида из раскадровки?

Вы можете загрузить его с раскадровки, используя метод instantiateViewControllerWithIdentifier. (Это идентификатор сцены, а не идентификатор segue. Этот метод возвращает вам указатель на контроллер вида.

Загрузка контроллера вашего вида из наконечника в порядке, но большинство людей используют раскадровки в наши дни, и есть некоторые вещи, которые вы можете сделать из раскадровки, что вы не можете сделать из наконечников

+0

Я использую раскадровки, но я пытался найти способ загрузить следующий вид, не имея необходимости использовать идентификатор. Я пробовал это, и это не позволяло игре играть. Я не знал о другом, который вы сказали, как бы включить это? –

+0

Вы должны быть яснее. Я не уверен, что вы подразумеваете под «... другим, который вы сказали ...». Вы имеете в виду использование instantiateViewControllerWithIdentifier. загрузить контроллер просмотра? Я предлагаю выполнить поиск по имени этого метода в документах. –