我有一个带有两个视图控制器的tabViewController,一个地图和一个UIListView。我想将当前地图区域中心传递给listView控制器,但目前要求用户首先点击UIListView控制器,然后返回到地图,然后返回到listview控制器,以便地图区域中心值为通过。
我确信有一种简单而优雅的解决方法,我只是不确定如何。
答案 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