Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/26.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
Objective c 带多个MKMapViews的UITABBARC控制器_Objective C_Ios_Cocoa Touch_Mapkit - Fatal编程技术网

Objective c 带多个MKMapViews的UITABBARC控制器

Objective c 带多个MKMapViews的UITABBARC控制器,objective-c,ios,cocoa-touch,mapkit,Objective C,Ios,Cocoa Touch,Mapkit,我有一个UITabBarController控制一对mkmappviews。我如何使他们的状态彼此保持一致?我已经尝试设置了一个单例模式,但它们仍然是独立的。我看到了两种可能的解决方案 在控制器(可能是单例)中实例化一(1x)MKMapView。假设在AppDelegate中有一个MKMapView实例 每个选项卡使用一个UIViewController实例(因此:控制器中有许多UIViewController,但只有一个MKMapView) 您可以在tabbar控制器代理上侦听-(BOOL)

我有一个
UITabBarController
控制一对
mkmappviews
。我如何使他们的状态彼此保持一致?我已经尝试设置了一个单例模式,但它们仍然是独立的。

我看到了两种可能的解决方案

  • 在控制器(可能是单例)中实例化一(1x)
    MKMapView
    。假设在
    AppDelegate
    中有一个
    MKMapView
    实例

    • 每个选项卡使用一个
      UIViewController
      实例(因此:控制器中有许多UIViewController,但只有一个MKMapView)
    • 您可以在tabbar控制器代理上侦听
      -(BOOL)tabbar控制器:(UITabBarController*)tabbar控制器应选择viewController:(UIViewController*)viewController
    • 当用户更改选项卡时,您将单个(1x)
      MKMapView
      放置在出现的UIViewController视图上
    • 但在这里,您将拥有相同的内容(注释、区域、数据)

  • 您可以同步多个
    MKMapView

    • 侦听MKMapView委托(
      –mapView:regionWillChangeAnimated:
      ,等等),并将值同步到其他MKMapView。您需要通过通知(
      NSNotification
      )或控制器来执行此操作
    • 这将使您能够更灵活地同步哪些值,哪些值必须不同于
      MKMapView
      MKMapView

  • “状态持久化”是什么意思?你想在所有MKMapView中都有相同的区域吗?所以当Tab A区域更改时,你想同时更改Tab B区域吗?是的!对一个区域的任何更改都会影响到另一个区域。相同的注释、相同的区域、相同的跨度等等。谢谢!我已经完成了1)但我记不起要听哪些代表消息。2) 看起来这是一个更优雅的解决方案,所以我同意。