使用 SpriteKit 场景呈现 UIAlertController (Objective-C)

Present an UIAlertController with a SpriteKit scene (Objective-C)

我正在尝试制作一个 SpriteKit 应用程序,如果用户愿意,它有一个按钮可以转到我的网站。我认为发出警报(因为它是为 iOS 8 制作的,我会使用 UIAlertController)确认他们是否想被重定向到 Safari 以查看它是一个很好的做法。

到目前为止,这是 make/present 此警报的方法代码:

UIAlertController *alertController = [UIAlertController alertControllerWithTitle:@"Go to website" message:@"Would you like to visit DannyDalton.com? This will open Safari." preferredStyle:UIAlertControllerStyleAlert];
        UIAlertAction *yes = [UIAlertAction actionWithTitle:@"Yes" style:UIAlertActionStyleDefault handler:^(UIAlertAction *action){
            [self goToSite];
        }];
        UIAlertAction *no = [UIAlertAction actionWithTitle:@"No" style:UIAlertActionStyleCancel handler:^(UIAlertAction *action){}];
        [alertController addAction:yes];
        [alertController addAction:no];
        [alertController presentViewController:(UIViewController*)self animated:YES completion:nil];

我的问题是将 alertController 呈现到视图控制器上,所以它会弹出。关于如何将 SKView 变成 UIViewController 以便 alertController 可以在屏幕上显示自己的任何建议?谢谢!

一种方法是使用 NSNotification.

GameViewController(包含SKView)中添加一个NSNotification观察者,当收到通知时调用该函数显示提醒。

class GameViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()

        NSNotificationCenter.defaultCenter().addObserver(self, selector: "showAlert:", name: "showAlert", object: nil)
     }

    func showAlert(object : AnyObject) {

       // Your alert code.
    }
}

然后 post 从您想要显示警报的地方发送此通知。

NSNotificationCenter.defaultCenter().postNotificationName("showAlert", object: nil)