当我打开模态视图时,如何更改出现在左上角的“取消”标签...我希望它是一个带有图像的按钮。
4 回答
标签Cancel
是模态呈现的 WKInterfaceController 的默认“标题”,它出现在 Apple Watch 状态栏上。
用图片替换标题
无法隐藏状态栏,也无法在状态栏中显示图像,既不能作为此链接的一部分,也不能替换此链接。
设置模式视图标题的选项
但是,您可以将标题设置为新的字符串值。例如,您可能很想Cancel
用Close
. 您可以通过四种方式设置此标题,如下所述。确保您阅读了底部的注释,因为在大多数情况下,可能只有选项 1 是可以接受的。
您可以在 Interface Builder 中设置模态呈现的 WKInterfaceController 的标题。只需在 Attributes Inspector 中设置 Title 属性。当然,每个 WKInterfaceController 只能以这种方式设置一个静态标题,尽管它可以在运行时使用上述任何机制动态更改。
您可以在模态呈现的 WKInterfaceController 的 init 方法中设置标题:
override init () { super.init () self.setTitle("Close") }
您可以直接在模态呈现的 WKInterfaceController 的 awakeWithContext 方法中设置标题:
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 在视图加载后按设计运行,但即使在 init 中使用 setTitle 也不会避免默认标题的初始显示。
上面概述的第一个选项替换Cancel
为视图的新默认标题。如果您将界面生成器中的自定义标题与下面的选项 2-4 中的任何一个结合使用,您会看到完全相同的症状(初始标题然后被替换为您的setTitle
),只是具有不同的初始标题。
可以删除/隐藏标题。只需将“”复制到情节提要的标题字段中。它不是 ASCII 空间。这是中国的空间。(虽然看不到标题,但仍然可以点击左上角关闭模型视图。)
然后您可以使用代码创建一个新按钮来关闭模型视图:[self dismissController];
我查看了 WatchKit 编程指南的“Presenting Interface Controllers Modally”部分,其中说:
模态界面的左上角显示界面控制器的标题字符串。当用户点击该字符串时,WatchKit 会关闭模式界面。设置标题字符串以反映关闭模态界面的含义。例如,在显示信息时,您可以将字符串设置为 Done 或 Close。如果您没有为界面控制器指定标题,WatchKit 默认显示字符串 Cancel。
关于那个“取消”位,WKInterfaceController 文档presentControllerWithName:context:
:
模态界面的标题设置为字符串 Cancel,除非呈现的界面控制器使用该
setTitle:
方法显式更改它。
似乎表明您此时唯一的选择是另一个字符串,而不是图像。
在标题中放入图像的一种有效但有限的方法是使用表情符号字符。从 Xcode 7.1 开始,模拟器似乎存在错误并在那里显示错误的字符,但它在设备上运行良好。
setTitle("Hello world! ")