【发布时间】:2013-10-29 04:44:25
【问题描述】:
我有一个设计问题。这是我想要做的:我想将MKMapView 约束到特定区域,同时使其成为想要实际使用地图的视图控制器的抽象。
为了限制地图视图,我很可能希望使用委托方法mapView:regionDidChangeAnimated: 并在该区域超出我的预定区域时收到更改通知并将地图移回。但是,由于我想让它足够通用,我不希望代码在视图控制器中。我想我可能想改为子类 MKMapView。
如果我这样做,我将拥有MKMapView 的子类(例如,ConstraintMapView 类),它也是MKMapView 的代表,并公开将区域约束给该类的任何用户的方法。但是类的用户(比如视图控制器)也希望成为MKMapView 的代表,所以我还想将所有的委托消息转发给视图控制器。
为此,我需要一个委托属性,该属性指向 real 委托(视图控制器),但在我的 ConstriantMapView 中,如果我有这意味着我将覆盖 @987654328 @ 的 setter 和 getter 到委托,事情变得有点复杂,因为在 MKMapView 内部它可以调用 ConstraintMapView 的方法,我会给它视图控制器,但我真的想给它 ConstraintMapView。
- 有没有办法让这个工作?
- 是否有更好的模式可以让控制器免于将视图移回约束区域的细节?
【问题讨论】:
标签: ios objective-c delegates mkmapview mapkit