将数据从一个视图控制器传递到同一视图上的另一个视图控制器

Posted

技术标签:

【中文标题】将数据从一个视图控制器传递到同一视图上的另一个视图控制器【英文标题】:Pass data to from one viewcontroller to another viewcontroller on the same view 【发布时间】:2020-08-13 19:42:32 【问题描述】:

我正在构建我的第一个应用,并且我有同时显示两个视图控制器。第一个是我的谷歌地图,顶部是一个面板(pod)我found。 Googlemaps 视图控制器调用位于单独故事板中的面板

我希望能够将数据传递到面板视图,而无需使用 segue。我尝试过 segue 方法,但它完全取代了整个视图。有没有办法让我将数据传递到面板而不必单独切换到该视图?

extension MapViewController: GMSMapViewDelegate 
     func mapView(_ mapView: GMSMapView, didTap marker: GMSMarker) -> Bool 

        guard let placeMarker = marker as? PlaceMarker else return false


        guard let panview = self.storyboard?.instantiateViewController(withIdentifier: "atminfo") as? PanelMaterial
        else 
            return false
        


        panview.Titlee = placeMarker.place.name
        atmaddress = panview.Titlee ?? "Me"
        print(atmaddress)

        return false



  


上面是我的代码,这是 GoogleMaps ViewController 之一,这是我从 pin 接收信息并尝试将其传递给在同一视图中处于活动状态的面板的地方。当我设置断点时,我能够接收数据,但是当面板在我的 GoogleMaps 视图中仍处于活动状态时传递数据不会显示。

感谢任何帮助。

【问题讨论】:

“我同时显示了两个视图控制器” ...您是通过UIContainerViews 加载它们吗? @DonMag ,不,我不是。他们只是按原样出现。放个截图 【参考方案1】:

您还可以使用单例类将数据传递给不同的控制器,或者您可以在 appdelegate 中创建对象,它也可以从任何类中使用。

像这样:

在 appdelegate 中声明变量

var channelID = ""

你可以用喜欢

let kAppDelegate = UIApplication.shared.delegate as! AppDelegate
print(kAppDelegate.channelID)

【讨论】:

好的,我知道它是如何工作的。然后我会将变量从 MapViewController 传递给应用程序委托,然后再传递给面板吗?

以上是关于将数据从一个视图控制器传递到同一视图上的另一个视图控制器的主要内容,如果未能解决你的问题,请参考以下文章

通过单击 Swift 3 中的 Alert Ok 按钮,翻转回同一视图控制器上的另一个视图

如何将数据从子视图传递到父视图到 SwiftUI 中的另一个子视图?

如何将数据从回调传递到Django中的另一个视图?

无法将数据从集合视图传递到 Xcode 中的详细视图

试图将字符串数组传递给目标视图控制器

在 codeigniter 中,如何将数组值从控制器传递到同一视图页面?