【发布时间】:2015-06-04 11:23:59
【问题描述】:
在我的 Apple Watch 应用中,我的一个界面控制器在左上角有一个取消按钮。就我而言,一旦完成特定操作,我不希望用户返回上一个屏幕,因此我想禁用该取消按钮的用户交互。即使我将标题更改为空字符串,用户交互仍然保持启用状态。
【问题讨论】:
标签: apple-watch watchos wkinterfacecontroller
在我的 Apple Watch 应用中,我的一个界面控制器在左上角有一个取消按钮。就我而言,一旦完成特定操作,我不希望用户返回上一个屏幕,因此我想禁用该取消按钮的用户交互。即使我将标题更改为空字符串,用户交互仍然保持启用状态。
【问题讨论】:
标签: apple-watch watchos wkinterfacecontroller
我们不能禁用后退/取消按钮用户行为,但可以在没有取消按钮的情况下加载控制器。
presentControllerWithName("NewInterfaceController", context: nil)
presentControllerWithName 这将显示带有取消按钮的控制器。如果我们像下面这样使用将不会得到取消按钮。
WKInterfaceController.reloadRootControllersWithNames(["NewInterfaceController"], contexts: ["NewInterfaceController"])
reloadRootControllersWithNames 这将使我们的控制器成为根控制器,因此我们不会得到取消按钮。这就是我解决问题的方式。希望对你也有帮助。
注意:这里的 [ ] 是语法。 exp: ["NewInterfaceController"]
【讨论】:
您不能禁用后退按钮的用户交互。
但是你可以稍微改变你表达观点的方式来完成你想要的。
从您的正常视图开始。检查您是否需要向用户显示登录信息。如果您这样做,则以模态方式呈现登录视图。登录结束时关闭模态视图并返回正常视图,没有不必要的后退按钮。
【讨论】:
这是 watchOS 7/Swift 5 中的 simbesi.com's answer。
以模态方式展示新的控制器:
presentController(withName: "NewInterfaceController", context: nil)
通过替换根控制器来呈现新控制器:
WKInterfaceController.reloadRootControllers(
withNamesAndContexts: [
(
name: "NewInterfaceController",
context: "NewInterfaceController" as AnyObject
)
]
)
【讨论】: