你好,我该如何在当前视图中调用当前视图父视图的视图控制器中实现的方法呢?请帮助我,谢谢。
你好,我该如何在当前视图中调用当前视图父视图的视图控制器中实现的方法呢?请帮助我,谢谢。
someView.fooDelegate = self;
那么视图将会执行以下操作:
if(self.fooDelegate != nil) {
if([fooDelegate respondsToSelector:...]) {
[fooDelegate performSelector:...];
}
}
这并非编译过的代码,但我认为你可以得出大概意思。
@interface pieceDraggableImageView : UIImageView {
CGPoint startLocation;
CGPoint startLocationInView;
EchiquierDisplayView *theSuperview;
}
@property (nonatomic, retain) EchiquierDisplayView *theSuperview;
-(void)correctDestinationPosition;
-(void)initWithView:(EchiquierDisplayView *)aSuperview;
...
-(void)askSuperview;
@end
@implementation pieceDraggableImageView
...
-(void)initWithView:(EchiquierDisplayView *)aSuperview
{
theSuperview = aSuperview;
}
...
-(void) correctDestinationPosition
{
[theSuperview correctIt];
}
UIViews对它们的视图控制器没有了解。您需要创建一个自定义的UIView子类来维护对一个(或多个)视图控制器的引用,尽管这样做会在UIView和UIViewController之间引入进一步的耦合。
您应该考虑实现父视图或视图类中的方法,而不是在视图控制器中实现它。
这里还有另一种方法:
SuperviewsViewController *controller = self.superview.nextResponder;
if (controller && [controller isKindOfClass:[SuperviewsViewController class]])
{
[controller method];
}
在大多数情况下,它应该能够正常工作。