В моем приложении Apple Watch один из моих контроллеров интерфейса имеет кнопку «Отмена» в верхнем левом углу. В моем случае после завершения определенного действия я не хочу, чтобы пользователь возвращался к предыдущему экрану, поэтому я хочу отключить взаимодействие с пользователем для этой кнопки «Отмена». Даже если я изменю заголовок на пустую строку, взаимодействие с пользователем все равно останется включенным.
Как я могу отключить взаимодействие с пользователем для кнопки «Отмена» на контроллере интерфейса watchOS?
Ответы (3)
Мы не можем отключить пользовательскую кнопку возврата / отмены, но можем загрузить контроллер без кнопки отмены.
presentControllerWithName("NewInterfaceController", context: nil)
presentControllerWithName представит контроллер с кнопкой отмены. Если мы используем, как показано ниже, кнопка отмены не появится.
WKInterfaceController.reloadRootControllersWithNames(["NewInterfaceController"], contexts: ["NewInterfaceController"])
reloadRootControllersWithNames, это сделает наш контроллер корневым, поэтому мы не получим кнопку отмены. Вот как я решил свою проблему. Надеюсь, это поможет и вам.
ПРИМЕЧАНИЕ: здесь [] - синтаксис. exp: ["NewInterfaceController"]
Вы не можете отключить взаимодействие с пользователем для кнопки «Назад».
Но вы можете немного изменить способ представления своих взглядов, чтобы добиться желаемого.
Начните с вашего обычного взгляда. Проверьте, нужно ли вам показывать пользователю логин. Если да, то представьте представление входа в систему Модально. В конце входа в систему вы закрываете модальное представление и возвращаетесь к нормальному виду без ненужной кнопки возврата.
Это ответ simbesi.com в watchOS 7 / Swift 5.
Представляем новый контроллер модально:
presentController(withName: "NewInterfaceController", context: nil)
Представляем новый контроллер путем замены корневого контроллера:
WKInterfaceController.reloadRootControllers(
withNamesAndContexts: [
(
name: "NewInterfaceController",
context: "NewInterfaceController" as AnyObject
)
]
)