Как отобразить оповещение в страничном интерфейсе на WatchOS? - PullRequest
0 голосов
/ 22 сентября 2019

Мое приложение для часов имеет страничный интерфейс, в котором я не знаю, какой InterfaceController в данный момент находится на экране (это может быть 1 из 4), однако мне нужно выдать предупреждение независимо от того, на каком экране находится приложение.Как я могу подать предупреждение, если я не знаю, какой InterfaceController является «текущим»?Код ниже будет работать, только если пользователь перешел на этот InterfaceController.Если пользователя нет на этой странице, я вижу эту ошибку в консоли 2019-09-22 15:42:01.597663-0400 Watch Extension[501:526217] Warning: Attempt to present <PUICAlertSheetController: 0x18158c00> on <SPInterfaceViewController: 0x1795e800> whose view is not in the window hierarchy!

extension WorkoutControlsInterfaceController: WorkoutEndedDelegate {
    func timerEndedCheckToSeeIfWorkoutEnded(_ manager: WorkoutManager) {
        let endWorkoutAction = WKAlertAction(title: "End Workout", style: .default, handler: {
            print("User has selected to end the workout")
            self.workoutManager?.stopWorkout()

        })
        let cancelAction = WKAlertAction(title: "Cancel", style: .cancel, handler: {

        })
        self.becomeCurrentPage()
        self.presentAlert(withTitle: "Workout Ended?", message: "It looks like your workout may have ended?", preferredStyle: .alert, actions: [endWorkoutAction, cancelAction])
    }


}

1 Ответ

1 голос
/ 22 сентября 2019

Вы можете использовать свойство visibileInterfaceController из общего объекта WKExtesion;

extension WorkoutControlsInterfaceController: WorkoutEndedDelegate {
    func timerEndedCheckToSeeIfWorkoutEnded(_ manager: WorkoutManager) {
        let endWorkoutAction = WKAlertAction(title: "End Workout", style: .default, handler: {
            print("User has selected to end the workout")
            self.workoutManager?.stopWorkout()

        })
        let cancelAction = WKAlertAction(title: "Cancel", style: .cancel, handler: {

        })

        WKExtension.shared().visibleInterfaceController?.presentAlert(withTitle: "Workout Ended?", message: "It looks like your workout may have ended?", preferredStyle: .alert, actions: [endWorkoutAction, cancelAction])
    }


}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...