当我打开模态视图时,如何更改左上角出现“取消”的标签...我希望它是一个带图像的按钮。
答案 0 :(得分:24)
标签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
替换),只是使用不同的初始标题。
答案 1 :(得分:6)
可以删除/隐藏标题。只需将''复制到故事板中的标题字段即可。它不是ASCII空间。这是中国的空间。 (虽然您看不到标题,但您仍然可以点击左上角以关闭模型视图。)
然后,您可以创建一个新按钮,使用代码[self dismissController];
答案 2 :(得分:2)
我看了"Presenting Interface Controllers Modally" section of the WatchKit programming guide,其中说:
模态界面的左上角显示界面 控制器的标题字符串。当用户点击该字符串时,WatchKit 驳回模态界面。设置标题字符串以反映 解雇模态界面的意义。例如,何时 显示信息,您可以将字符串设置为“完成”或“关闭”。 如果 您没有为您的界面控制器WatchKit指定标题 默认情况下显示字符串取消。
关于那个“取消”位,presentControllerWithName:context:
的WKInterfaceController文档:
模态接口的标题设置为取消字符串,除非 呈现的接口控制器使用显式更改它
setTitle:
方法。
似乎表明你此时唯一的选择是另一个字符串,而不是图像。
答案 3 :(得分:0)
在标题中放入图像的一种有效的方法是使用表情符号字符。从Xcode 7.1开始,模拟器似乎遇到了一个错误并在那里显示错误的字符,但它在设备上运行得非常好。
setTitle("Hello world! ")