Можно ли изменить текст в другом WKInterfaceController, который в настоящее время не отображается в постраничном представлении?

Я не могу понять, как из interfaceController, который в настоящее время отображается в представлении на основе страницы, изменить текст на другой странице interfaceController, которая в данный момент не отображается.

Кажется, вы можете изменить только метки интерфейсного контроллера, который отображается в данный момент.

Кто-нибудь знает, как изменить ярлык другого контроллера?

var timerControllers = Array<TimerDetailController>()

class TimerDetailController: WKInterfaceController {

    override func awakeWithContext(context: AnyObject?) {
        super.awakeWithContext(context)

        timerControllers.append(self)
    }


    func setLabel(){
       timerControllers[0].clientName.setText("my new label")
    }
}

Я хочу иметь возможность вызывать setLabel() с любой страницы таймера. Но вместо этого это работает, только если отображаемый контроллер совпадает с timerControllers[0].


person John Pollard    schedule 17.02.2015    source источник


Ответы (1)


Вместо изменения метки, которая в настоящее время не существует, вам нужно изменить значение источника данных, который будет использоваться для установки значения метки при каждом создании представления.

person Duncan Babbage    schedule 18.02.2015
comment
Я никогда не думал, что его в настоящее время не существует, так как я вижу его на экране, когда пролистываю страницы. Я воспользовался вашим подходом и изменил WillActivate, чтобы устанавливать поля всякий раз, когда пользователю показывается каждая страница. Я изменяю данные объекта, который составляет страницу, которая в данный момент не отображается, поэтому, когда он отображается, он исправляет себя. Это единственный способ сделать это? - person John Pollard; 18.02.2015