Подтвердить что ты не робот

Как изменить ярлык "Отмена" от модального сегмента в Apple Watch

Как изменить ярлык, появляющийся в верхнем левом углу, который говорит "Отмена", когда я открываю модальный вид... Я бы хотел, чтобы это была кнопка с изображением.

4b9b3361

Ответ 1

Ярлык Cancel является по умолчанию "заголовком" модально представленного WKInterfaceController, который отображается в строке состояния Apple Watch.

Замена заголовка изображением

Невозможно скрыть строку состояния, а также не отобразить изображение в строке состояния, ни как часть этой ссылки, ни заменить эту ссылку.

Опции для установки названия модального вида

Однако вы можете установить заголовок на новое строковое значение. Например, вы можете захотеть заменить Cancel на Close. Существует четыре способа установить этот заголовок, который описан ниже. Убедитесь, что вы прочитали Примечание внизу, так как скорее всего вариант 1 будет приемлемым в большинстве случаев.

  • Вы можете установить заголовок модально представленного WKInterfaceController в Interface Builder. Просто установите атрибут Title в Инспекторе атрибутов. Конечно, только один статический заголовок может быть установлен для каждого WKInterfaceController, хотя он может динамически изменяться во время выполнения с использованием любого из описанных выше механизмов.

  • Вы можете установить заголовок в методе init для модально представленного WKInterfaceController:

    override init () {
        super.init ()        
        self.setTitle("Close")
    }
    
  • Вы можете установить заголовок непосредственно в методе awakeWithContext модально представленного WKInterfaceController:

    override func awakeWithContext(context: AnyObject?) {
        super.awakeWithContext(context)
        self.setTitle("Close")
    }
    
  • Вы можете передать название модально представленному WKInterfaceController, используя переменную контекста. В построителе интерфейса установите identifier в Инспекторе атрибутов контроллера, который будет представлен в виде модально. (В этом примере он был установлен в "modalController".) Затем вы представляете контроллер, передавая желаемый заголовок в качестве контекста:

    self.presentControllerWithName("modalController", context: "Close")
    

    Затем в модально представленном контроллере:

    override func awakeWithContext(context: AnyObject?) {
        super.awakeWithContext(context)                
        self.setTitle(context as? String)
    }
    

Примечание:

Текущее "предполагаемое поведение" WatchKit почти наверняка означает, что только первый вариант будет считаться приемлемым в большинстве случаев использования. Это связано с тем, что в настоящее время для остальных трех параметров вы сначала увидите заголовок по умолчанию для представления при его загрузке, который затем будет заменен текстом, который вы установили с помощью setTitle. awakeWithContext работает по дизайну после загрузки представления, но даже с использованием setTitle в init не избегает начального отображения заголовка по умолчанию.

Первый вариант, описанный выше, заменяет Cancel новым заголовком по умолчанию для представления. Если вы комбинируете собственный заголовок в конструкторе интерфейса с любым из вариантов 2-4 ниже, вы видите точно такой же симптом (начальное название затем заменяется на setTitle), просто с другим начальным заголовком.

Ответ 2

Можно удалить/скрыть заголовок. Просто скопируйте '' в поле заголовка в раскадровке. Это не ASCII-пространство. Это китайское пространство. (Хотя вы не можете увидеть название, вы все равно можете нажать верхний левый угол, чтобы закрыть представление модели.)

Затем вы можете создать новую кнопку, чтобы закрыть представление модели с помощью кода: [self dismissController];

Ответ 3

Я просмотрел раздел "Представление интерфейсных контроллеров в моделях" руководства по программированию WatchKit, в котором говорилось:

В верхнем левом углу модального интерфейса отображается интерфейс строка заголовков контроллеров. Когда пользователь удаляет эту строку, WatchKit отклоняет модальный интерфейс. Задайте строку заголовка, чтобы отобразить смысл отклонения модального интерфейса. Например, когда отображая информацию, вы можете установить строку Готово или Закрыть. Если вы не указываете заголовок для вашего контроллера интерфейса, WatchKit отображает строку Отмена по умолчанию.

И о том, что бит "Отмена", документация WKInterfaceController для presentControllerWithName:context::

Название модального интерфейса устанавливается в строку "Отмена", если только представленный интерфейсный контроллер явно меняет его, используя setTitle:.

кажется, что ваш единственный выбор в это время - это еще одна строка, а не изображение.

Ответ 4

Рабочим, хотя и ограниченным, способом поместить изображение в заголовок, является использование символа эможи. Начиная с Xcode 7.1, симулятор, похоже, страдает от ошибки и отображает там неправильные символы, но на устройстве он отлично работает.

setTitle("Hello world! 🌍")