创建viewcontroller的实例,而不在Swift中显示它

时间:2016-02-04 08:11:35

标签: ios swift

我有一个带有两个视图控制器的tabViewController,一个地图和一个UIListView。我想将当前地图区域中心传递给listView控制器,但目前要求用户首先点击UIListView控制器,然后返回到地图,然后返回到listview控制器,以便地图区域中心值为通过。

我确信有一种简单而优雅的解决方法,我只是不确定如何。

2 个答案:

答案 0 :(得分:4)

为什么不创建一个由某些视图控制器更新并由其他人读取的单例?即使没有同时分配,这也是让两个不相关的视图控制器进行通信的首选方式。

修改

假设你有一个这样的类:

class PointSingleton {
    var point = CGPointZero
    static let sharedPoint : PointSingleton = PointSingleton()

    private init() {}
}

你现在可以

PointSingleton.sharedPoint.point = CGPoint(x: 2, y: 3)

以及使用

PointSingleton.sharedPoint.point

无论你喜欢什么。

答案 1 :(得分:0)

点击UIListView项目,更改选项卡栏控制器的选定索引。没有提供任何代码,我能提供的最好的是

  tabBarController?.selectedIndex = 0;

然后传递数据

var destinationViewController = tabBarController.viewControllers[0] as UIViewController
destinationViewController.whateverVar = "some value"

<强>编辑:

列表视图上的

创建一种访问MapViewController的方法

//your map
    var mapVC = tabBarController.viewControllers[0] as UIViewController

然后像往常一样抓住地图中心

var centerCoord = mapVC.mapView.centerCoordinate