あなたはのUIViewController AがBのUIViewControllerを呼び出し、最初のコントローラが却下されたときに、2つのコントローラがnilであるため、それを行うことはできません。
UIViewControllerをベースにする必要があります。この場合、MainViewControllerがベースです。コントローラ間でナビゲーションを呼び出すには、プロトコルを使用する必要があります。あなたは、プロトコルを使用して行うことができます
は怒鳴るよう例えばとしましょう: - :あなたのメインビューコントローラ
class MainViewController: UIViewController, FirstViewControllerProtocol {
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
@IBAction func goToFirstViewController(sender: AnyObject) {
let viewController = self.storyboard?.instantiateViewControllerWithIdentifier(String(FirstViewController)) as! FirstViewController
viewController.delegate = self
self.presentViewController(viewController, animated: true, completion: nil)
}
//MARK: Protocol
func dismissViewController() {
if let viewController = self.storyboard?.instantiateViewControllerWithIdentifier(String(SecondViewController)){
self.presentViewController(viewController, animated: true, completion: nil)
}
}
Code example with storyboard:
で今
protocol FirstViewControllerProtocol {
func dismissViewController()
}
class FirstViewController: UIViewController {
var delegate:FirstViewControllerProtocol!
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
@IBAction func goBack(sender: AnyObject) {
self.dismissViewControllerAnimated(true) {
self.delegate!.dismissViewController()
}
}
プロトコルを設定あなたのViewControllerには
はself.parentViewControllerてみてください.presentViewController(VC !,アニメ化?: true、completion:nil) –
@SandeepKumarまだ動作していません –
最初に提示しようとしていますか、最初に却下しますか? – Code