presentViewController()弹出最后一个视图后面的视图

时间:2016-03-08 16:36:32

标签: ios swift uiviewcontroller

我试图在另一个故事板中执行到另一个UIViewController的转换,但问题是我要显示的视图会弹出我所在的视图后面。 我知道,因为我的应用程序在视图之间包含类似Snapchat的导航,所以我可以将视图向左或向右拖动,我可以看到背后的视图。

以下是我尝试这样做的方法:

class Hello; end

a = Hello.new

class Hello; def world; puts "Hi" end end

b = Hello.new

a.world # "Hi"
b.world # "Hi"

@IBAction func account(sender: UIButton) { if self._isOnline { self.pageController?.reverseViewControllerAnimated(true) } else { let alertView = UIAlertController(title: "blablablabla", message: "blablablabla", preferredStyle: .Alert) alertView.addAction(UIAlertAction(title: "No", style: .Cancel, handler: nil)) alertView.addAction(UIAlertAction(title: "Yes", style: .Default, handler: { (alertAction) -> Void in let storyboard = UIStoryboard(name: "SignUpLogin", bundle: NSBundle.mainBundle()) let vc = storyboard.instantiateInitialViewController() as! UIViewController self.presentViewController(vc, animated: false, completion: nil) })) presentViewController(alertView, animated: true, completion: nil) } } 是我的第二个.storyboard文件的名称,我在SignUpLogin中。 该操作发生在Heart.storyboard,如果用户按否,则无任何附加,如果他按是,则应将其重定向到我的UIAlertController文件的初始视图。

O

我的问题来自左下角的视图。如果我在右上角的视图中使用上面的代码,那就有效!为什么?

我不知道我怎么能做不同的事情。

1 个答案:

答案 0 :(得分:0)

我找到了解决问题的方法!

    @IBAction func account(sender: UIButton) {
    if self._isOnline {
        self.pageController?.reverseViewControllerAnimated(true)
    }
    else {
        let alertView = UIAlertController(title: Constants.LocalizedJoinOurBand, message: Constants.LocalizedNeedToCreatAnAccount, preferredStyle: .Alert)
        alertView.addAction(UIAlertAction(title: Constants.LocalizedNo, style: .Cancel, handler: nil))
        alertView.addAction(UIAlertAction(title: Constants.LocalizedYes, style: .Default, handler: { (alertAction) -> Void in

            if let appDelegate = UIApplication.sharedApplication().delegate as? AppDelegate {
                let storyboard = UIStoryboard(name: "SignUpLogin", bundle: NSBundle.mainBundle())
                let vc = storyboard.instantiateInitialViewController() as! UIViewController
                UIApplication.sharedApplication().keyWindow?.rootViewController = vc
            }
        }))
        presentViewController(alertView, animated: true, completion: nil)
    }
}

我不知道为什么在这种情况下特别但我必须用这一行直接设置AppDelegate的rootViewController

UIApplication.sharedApplication().keyWindow?.rootViewController = vc