如何从 Apple Watch 中的模态转场更改标签 "Cancel"
How can I change the label "Cancel" from modal segue in Apple Watch
当我打开模态视图时,如何更改出现在左上角的 "Cancel" 标签...我希望它是一个带有图像的按钮。
我看了"Presenting Interface Controllers Modally" section of the WatchKit programming guide,里面说:
The top-left corner of a modal interface displays the interface
controller’s title string. When the user taps that string, WatchKit
dismisses the modal interface. Set the title string to reflect the
meaning of dismissing the modal interface. For example, when
displaying information, you might set the string to Done or Close. If
you do not specify a title for your interface controller, WatchKit
displays the string Cancel by default.
关于 "Cancel" 位,presentControllerWithName:context:
的 WKInterfaceController 文档:
The title of the modal interface is set to the string Cancel unless
the presented interface controller explicitly changes it using the
setTitle:
method.
似乎表明您此时唯一的选择是另一个字符串,而不是图像。
标签 Cancel
是模态呈现的 WKInterfaceController 的默认 'title',它出现在 Apple Watch 状态栏上。
用图片替换标题
无法隐藏状态栏,也无法在状态栏中显示图像,既不能作为此 link 的一部分,也无法替换此 link。
设置模态视图标题的选项
不过,您可以将标题设置为新的字符串值。例如,您可能希望将 Cancel
替换为 Close
。您可以通过四种方式设置此标题,如下所述。请务必阅读底部的 注意事项,因为在大多数情况下可能只有选项 1 是可接受的。
您可以在 Interface Builder 中设置模态呈现的 WKInterfaceController 的标题。只需在 Attributes Inspector 中设置 Title 属性即可。当然,每个 WKInterfaceController 只能以这种方式设置一个静态标题,尽管它可以在运行时使用上述任何机制动态更改。
您可以在 init 方法中为模态呈现的 WKInterfaceController 设置标题:
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 的当前 'intended behaviour' 几乎可以肯定意味着在大多数用例中只有第一个选项将被视为可接受的。这是因为目前,对于其他三个选项,您最初会在视图加载时看到默认标题,然后将替换为您使用 setTitle 设置的文本。 awakeWithContext 按设计在视图加载后运行,但即使在 init 中使用 setTitle 也不能避免默认标题的初始显示。
上面概述的第一个选项将 Cancel
替换为视图的新默认标题。如果您将界面构建器中的自定义标题与下面的任何选项 2-4 结合使用,您会看到完全相同的症状(初始标题然后被替换为您的 setTitle
),只是初始标题不同。
可以remove/hide标题。只需将“ ”复制到情节提要中的标题字段中。它不是 ASCII space。是中文space。 (虽然看不到标题,但您仍然可以点击左上角关闭模型视图。)
然后您可以使用以下代码创建一个新按钮来关闭模型视图:[self dismissController];
在标题中放入图片的一种可行但有限的方法是使用表情符号字符。从 Xcode 7.1 开始,模拟器似乎存在错误并在那里显示错误的字符,但它在设备上运行良好。
setTitle("Hello world! ")
当我打开模态视图时,如何更改出现在左上角的 "Cancel" 标签...我希望它是一个带有图像的按钮。
我看了"Presenting Interface Controllers Modally" section of the WatchKit programming guide,里面说:
The top-left corner of a modal interface displays the interface controller’s title string. When the user taps that string, WatchKit dismisses the modal interface. Set the title string to reflect the meaning of dismissing the modal interface. For example, when displaying information, you might set the string to Done or Close. If you do not specify a title for your interface controller, WatchKit displays the string Cancel by default.
关于 "Cancel" 位,presentControllerWithName:context:
的 WKInterfaceController 文档:
The title of the modal interface is set to the string Cancel unless the presented interface controller explicitly changes it using the
setTitle:
method.
似乎表明您此时唯一的选择是另一个字符串,而不是图像。
标签 Cancel
是模态呈现的 WKInterfaceController 的默认 'title',它出现在 Apple Watch 状态栏上。
用图片替换标题
无法隐藏状态栏,也无法在状态栏中显示图像,既不能作为此 link 的一部分,也无法替换此 link。
设置模态视图标题的选项
不过,您可以将标题设置为新的字符串值。例如,您可能希望将 Cancel
替换为 Close
。您可以通过四种方式设置此标题,如下所述。请务必阅读底部的 注意事项,因为在大多数情况下可能只有选项 1 是可接受的。
您可以在 Interface Builder 中设置模态呈现的 WKInterfaceController 的标题。只需在 Attributes Inspector 中设置 Title 属性即可。当然,每个 WKInterfaceController 只能以这种方式设置一个静态标题,尽管它可以在运行时使用上述任何机制动态更改。
您可以在 init 方法中为模态呈现的 WKInterfaceController 设置标题:
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 的当前 'intended behaviour' 几乎可以肯定意味着在大多数用例中只有第一个选项将被视为可接受的。这是因为目前,对于其他三个选项,您最初会在视图加载时看到默认标题,然后将替换为您使用 setTitle 设置的文本。 awakeWithContext 按设计在视图加载后运行,但即使在 init 中使用 setTitle 也不能避免默认标题的初始显示。
上面概述的第一个选项将 Cancel
替换为视图的新默认标题。如果您将界面构建器中的自定义标题与下面的任何选项 2-4 结合使用,您会看到完全相同的症状(初始标题然后被替换为您的 setTitle
),只是初始标题不同。
可以remove/hide标题。只需将“ ”复制到情节提要中的标题字段中。它不是 ASCII space。是中文space。 (虽然看不到标题,但您仍然可以点击左上角关闭模型视图。)
然后您可以使用以下代码创建一个新按钮来关闭模型视图:[self dismissController];
在标题中放入图片的一种可行但有限的方法是使用表情符号字符。从 Xcode 7.1 开始,模拟器似乎存在错误并在那里显示错误的字符,但它在设备上运行良好。
setTitle("Hello world! ")