呈现带有SpriteKit场景的UIAlertController(Objective-C)

时间:2015-03-20 03:38:41

标签: ios objective-c sprite-kit uikit

我试图制作一个SpriteKit应用程序,如果用户愿意,可以使用按钮进入我的网站。我认为发出警报(因为它是为iOS 8制作的,我使用UIAlertController)确认是否要重定向到Safari以查看它是一个好习惯。

以下是目前为止制作/提供此提醒的方法的代码:

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可以在屏幕上显示的任何建议吗?谢谢!

1 个答案:

答案 0 :(得分:3)

执行此操作的一种方法是使用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.
    }
}

然后从您要显示提醒的地方发布此通知。

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