Swiftui 仅仅声明环境变量openURL就会导致popover行为不稳定
如下面的示例代码所示。在不声明openURL变量的情况下运行时,popover将正确显示。取消对行的注释,它会出现在错误的位置,并且拒绝被驳回。我真的可以用一个修复/工作来解决Swiftui 仅仅声明环境变量openURL就会导致popover行为不稳定,swiftui,popover,openurl,Swiftui,Popover,Openurl,如下面的示例代码所示。在不声明openURL变量的情况下运行时,popover将正确显示。取消对行的注释,它会出现在错误的位置,并且拒绝被驳回。我真的可以用一个修复/工作来解决 struct Popover: View { @State var isShowingPopover = false // @Environment(\.openURL) var openURL var body: some View { Text("Content&qu
struct Popover: View {
@State var isShowingPopover = false
// @Environment(\.openURL) var openURL
var body: some View {
Text("Content")
.toolbar {
ToolbarItemGroup(placement: .primaryAction) {
Button("Popover") {
isShowingPopover.toggle()
}
.popover(isPresented: $isShowingPopover) {
Button(action:{
// openURL(URL(string: "https://cnn.com")!)
}){
Label("Open CNN", systemImage: "hand.thumbsup")
}
.padding()
}
}
}
}
}
struct Popover_Previews: PreviewProvider {
static var previews: some View {
NavigationView{
Text("Sidebar")
Popover()
}
}
}
出现
工具栏
缺陷。。。使用navigationBarItems
效果很好
使用Xcode 12.1/iOS 14.1进行测试
struct PopoverView: View {
@State var isShowingPopover = false
@Environment(\.openURL) var openURL
var body: some View {
Text("Content")
.navigationBarItems(trailing:
Button("Popover") {
isShowingPopover.toggle()
}
.popover(isPresented: $isShowingPopover) {
Button(action:{
openURL(URL(string: "https://cnn.com")!)
}){
Label("Open CNN", systemImage: "hand.thumbsup")
}
.padding()
})
}
}
如果您的目标是iOS 14及更高版本,您可以尝试使用
链接
,而不是使用打开URL
按钮。这主意不错,但将URL链接放在菜单中似乎也不起作用!我收回那句话。。。没有在模拟器中工作,但在设备上工作…不知道菜单是什么意思,我指的是。很有帮助,谢谢。