2011-10-07 27 views
0

我有一个UIView,我已将子类视为在我的应用程序中使用的主视图。其中,我有两个子视图:横幅和容器。 Banner基本上是投放广告或免责声明或其他内容的地方。容器意味着作为主要视图,您可以添加,删除视图,并将其视为唯一的视图。设置子视图作为调用父级UIView子类的响应者

现在,我只是重写父视图的方法并将调用发送到容器视图。我不知道是否有这样做的更简单的方法,而不必写出这样的东西,每方法:

- (void)addSubview:(UIView*)view { 
    [container addSubview:view]; 
} 

也许你可以将其委托的所有方法调用视图以特定的子视图,而不是响应方法调用本身。

任何人都知道这是可能的吗?

回答

0

我对这个问题有点困惑。

Responder链存在并按照层次结构将ui事件传递到屏幕上的所有可见视图。阅读一些关于响应者链可能是有用的,因为通过设计它将事件从最深的视图传递到最高的(根),这与你正在寻找的方向相反(如果我正在阅读这个权利)。

如果您需要将事件从超级视图转发到子视图,为了尊重封装原则,您应该在子视图的子类接口中定义适当的操作,然后配置您的超级视图以将该子视图/类中的操作作为目标。

+0

这不是关于对UI操作的响应,更多是关于将主视图的子视图作为外部方法调用的主视图。例如,当我将我的BaseView子类添加为导航控制器的视图时,我希望是否将所有对“self.view”方法的调用传递给self.view的特定子视图,而不必覆盖所有方法的UIView。 –

+1

你可能会想一点点。视图控制器有一个隐式视图[self view],但它并不局限于拥有一个视图,所以在你的情况下,你需要在视图控制器loadView中实例化两个视图 - 一个是你的baseView,直接分配给视图控制器的自身。视图,然后是一个附加的外围视图,添加到同一个超级视图,但没有指定为视图控制器的self.view(相当于它会被VC子类的另一个属性引用,即self.extraView。 – isaac

+0

)重复说添加额外的视图到self.view的超级视图,即'[self.view.superview addSubview:extraView]',这实际上并不奏效.Xcode不与我或任何人争论,但视图只是我不认为视图控制器是用来显示任何不在主视图中的东西...? –

相关问题