2016-02-08 2 views
1

Учитывая приведенный ниже код, когда я нажимаю кнопку «Принять», он не переходит на SecondViewController, он показывает только черный экран. Любая помощь оценивается.Как перемещаться по ViewController при нажатии кнопки в alertView

let alertController = UIAlertController(title: tit!, message: "Book Now!", preferredStyle: .Alert) 
    let declineAction = UIAlertAction(title: "Decline", style: .Cancel, handler: nil) 
    alertController.addAction(declineAction) 

    let acceptAction = UIAlertAction(title: "Accept", style: .Default) { (_) -> Void in 
     let nv=SecondViewController() 
     self.presentViewController(nv, animated:true, completion:nil) 
    } 
    presentViewController(alertController, animated: true, completion: nil) 
    alertController.addAction(acceptAction) 

ответ

1

Чтобы открыть любой UIViewController просто должен instantiate его. И то, что вы делаете, просто создает объект класса.

Для этого:

let nv = self.storyboard!.instantiateViewControllerWithIdentifier("storyboardidentifier") as! SecondViewController 
self.presentViewController(nv, animated:true, completion:nil) 

Это работает ваш UIViewController как хочет!

+0

T qI попробует ... – Honestraj19

+0

рассказчик-раскачка означает миноритарное имя. Правильно это – Honestraj19

+0

@ Honestraj19 Убедитесь, что вы указали «идентификатор» на свой 'UIViewController' из' StoryBoard' –

0

Создать ссылку SEGUE из текущего контроллера представления в SecondViewController и дать ему идентификатор в раскадровке, и вы можете использовать следующий код

let alert = UIAlertController(title: "Options", message: "Book Now!", preferredStyle: .Alert) 

    alert.addAction(UIAlertAction(title: "Cancel", style: UIAlertActionStyle.Cancel, handler: nil)) 
    alert.addAction(UIAlertAction(title: "Accept", style: UIAlertActionStyle.Default, handler: { (alertAction) -> Void in 
     self.performSegueWithIdentifier("FirstToSecond", sender: self) 

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

Примечание: Ваш первый контроллер представления будет якорем.

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

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { 
    if segue.identifier == "FirstToSecond" { 
     let nav = segue.destinationViewController as! UINavigationController 
     let svc = nav.viewControllers[0] as! SecondViewController 
     //svc.delegate = self //uncomment this if you need to set a delegate as well 
     svc.value = "" 
    } 
} 

Это использование Xcode 7 & Swift 2. Надеюсь, что это помогает :)

+0

tq @amronNarula – Honestraj19

+0

Hai Amornnarula .... – Honestraj19

+0

Я хочу установить временную задержку для моего контроллера предупреждения. Возможно это – Honestraj19

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