我有一个.systemMedium widget。有2个vstack导航到应用程序中的不同视图(视图深度链接)
问题是当我按下第一个vstack时,它继续重定向到Button2Path而不是Button1Path:
var body: some View {
HStack(alignment: VerticalAlignment.top) {
Spacer()
VStack {
Button {
print("button 1 was tapped")
} label: {
Image("BtnView1")
}
Text("button 1")
}.widgetURL(URL(string: "testApp://Button1Path"))
Spacer()
VStack {
Button {
print("button 2 was tapped")
} label: {
Image("BtnView2")
}
Text("button 2")
}.widgetURL(URL(string: "testApp://Button2Path"))
}
}
查看widgetURL上的文档,上面写着“设置URL以在用户单击widget时在包含应用程序中打开”。
请问还有其他方法可以做到这一点吗?
是使用Link吗?如何使用Vstack?
Link(destination: URL(string: "testApp://Button1Path")!) {
Text("Link 1")
}
1条答案
按热度按时间mm5n2pyu1#
有几种方法可以打开小部件的URL:
如果你的widget只需要在一个地方处理URL-你可以使用**
widgetURL(_:)
**。此方法返回一个视图,当用户单击小部件时,该视图将打开指定的URL。小部件在其视图层次结构中支持一个widgetURL修饰符。如果多个视图具有widgetURL修饰符,则行为未定义。
对于使用WidgetFamily.systemMedium或WidgetFamily.systemLarge的小部件,您可以向小部件的视图层次结构添加一个或多个链接控件。
**您可以同时使用widgetURL和Link控件。**如果交互的目标是Link控件,则系统将使用该控件中的URL。对于小部件中其他任何地方的交互,系统使用widgetURL视图修饰符中指定的URL。
要在示例中支持处理多个深度链接,请分别使用不同的Link控件 Package 两个VStack。
如果在视图层次结构中有多个深度链接-您可以使用Link控件来处理它们。