Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SwiftUI:将视图信息传递给UIKit_Swift_Swiftui_Uikit_Uialertcontroller_Uihostingcontroller - Fatal编程技术网

SwiftUI:将视图信息传递给UIKit

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

我有一个UIKit和AppKit应用程序,我通过UIHostingController/NSHostingController在其中显示一个SwiftUI视图。视图上有一些按钮,我想将点击事件传回UIKit/AppKit视图控制器,从点击的按钮显示UIAlertController(我更喜欢在SwiftUI中使用ActionSheet,但macOS不支持)。我将一个委托通过宿主控制器传递到SwiftUI视图中,并使用该委托调用UIKit/AppKit视图。但要显示UIAlertController(甚至是
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

,这应该会有所帮助。