SwiftUI:将视图信息传递给UIKit
我有一个UIKit和AppKit应用程序,我通过UIHostingController/NSHostingController在其中显示一个SwiftUI视图。视图上有一些按钮,我想将点击事件传回UIKit/AppKit视图控制器,从点击的按钮显示UIAlertController(我更喜欢在SwiftUI中使用ActionSheet,但macOS不支持)。我将一个委托通过宿主控制器传递到SwiftUI视图中,并使用该委托调用UIKit/AppKit视图。但要显示UIAlertController(甚至是SwiftUI:将视图信息传递给UIKit,swift,swiftui,uikit,uialertcontroller,uihostingcontroller,Swift,Swiftui,Uikit,Uialertcontroller,Uihostingcontroller,我有一个UIKit和AppKit应用程序,我通过UIHostingController/NSHostingController在其中显示一个SwiftUI视图。视图上有一些按钮,我想将点击事件传回UIKit/AppKit视图控制器,从点击的按钮显示UIAlertController(我更喜欢在SwiftUI中使用ActionSheet,但macOS不支持)。我将一个委托通过宿主控制器传递到SwiftUI视图中,并使用该委托调用UIKit/AppKit视图。但要显示UIAlertControlle
UIActivityViewController
),我需要从SwiftUI视图中获取有关sourceView
和sourceRect
的信息,否则它可能会在iPad上崩溃
如何将该信息从SwiftUI视图传递回UIKit/Appkit应用程序?我想
sourceView
可能是显示的SwiftUI视图,但是我如何读取(并传回)被点击的SwiftUI按钮的矩形?我找到了一种方法。由于按钮是从顶级SwiftUI向下的几层子视图,因此我使用以下命令为父视图命名:
.coordinateSpace(name: "CalloutParentView")
geometry.frame(in: .named("ParentView")
然后,我将按钮包装在一个GeometryReader
中,并在按钮处理程序中,使用以下命令获得“rect”:
.coordinateSpace(name: "CalloutParentView")
geometry.frame(in: .named("ParentView")
我通过委托将其传递给宿主UIViewController,它可以使用SwiftUI视图作为sourceView
,并将此rect作为sourceRect
,这应该会有所帮助。