如何在仅SwiftUI项目中正确显示PKPaymentAuthorizationViewController?

如何在仅SwiftUI项目中正确显示PKPaymentAuthorizationViewController?,swiftui,uikit,applepay,passkit,Swiftui,Uikit,Applepay,Passkit,我已经访问过这个答案,但已经不起作用了。当我使用UIViewControllerRepresentable并将其显示为工作表时,它看起来非常糟糕: 如果我使用overlay它看起来与我想要的完全一样,但是overlay不能从按钮触发 以下是(浓缩)代码: public struct ContentView:View{ @观察对象var模型:RootViewModel @国家私有变量tappedDonate=false 公共机构:一些看法{ 按钮(操作:{ tappedDonate=真 },标签

我已经访问过这个答案,但已经不起作用了。当我使用
UIViewControllerRepresentable
并将其显示为工作表时,它看起来非常糟糕:

如果我使用
overlay
它看起来与我想要的完全一样,但是
overlay
不能从
按钮触发

以下是(浓缩)代码:

public struct ContentView:View{
@观察对象var模型:RootViewModel
@国家私有变量tappedDonate=false
公共机构:一些看法{
按钮(操作:{
tappedDonate=真
},标签:{
文本(“捐赠”)
.框架(宽:300,高:44,对齐:。中心)
})
.框架(宽:300,高:20,对齐:。中心)
.padding()
.背景(颜色.黑色)
.foregroundColor(.白色)
.转弯半径(22)
.表(显示:$TAPPEDONATE){
ApplePayRapper(请求:model.buildApplePayment())
.背景(颜色.清晰)
}
}
public init(模型:RootViewModel){
self.model=model
}
}

我不是100%相信这是最好的方法,但我设法让它在视觉上工作,就像我打算使用
ZStack来工作一样


        ZStack {           
            Button(action: {
                tappedDonate = true
            }, label: {
                Text("Donate")
                    .frame(width: 300, height: 44, alignment: .center)
            })
            .frame(width: 300, height: 20, alignment: .center)
            .padding()
            .background(Color.black)
            .foregroundColor(.white)
            .cornerRadius(22)
            if tappedDonate {
                ApplePayWrapper(request: model.buildApplePayment())
            }
        }

请注意,您仍然需要通过代理点击外部来连接取消按钮和常规解除按钮,否则带有按钮的底层UI不会再次响应触摸。

即使在SwiftUI 2中,您是否找到了更好的方法?这方面还没有文档或样本。嗨@TruMan1不,我没有,我已经放弃了这个项目,因为现在生活中有太多的事情同时发生。如果您找到更好的解决方案,请告诉我。我也遇到了确切的问题。通过ZStack处理它很好。某个地方肯定有内存泄漏。当我手动
nil
退出PK控制器实例时,它工作得更好,但仍然不稳定。我可以在那之后一次又一次地打开它,但“取消”按钮仍然不起作用,而且事件非常不稳定。