我是 Objective C 和 Cocoa 的新手。我只是不明白如何向 UIView 的超级视图发送消息。我无法让它发挥作用。这是我到目前为止所尝试的:
在我的 MainView 中,我有一个名为 ResetDrawType 的方法:
- (void) resetDrawType {
self.drawType = foo;
}
另外,在 MainView 中,我创建一个子视图并将其添加到 MainView 中:
mySubView *mySubView = [[mySubView alloc] initWithFrame:CGRectMake(foo, foo, foo, foo)];
[self addSubview:mySubView];
[mySubView release];
然后,当子视图完成绘制时,我想将消息resetDrawType发送到其超级视图,即MainView。
我试过这个
[(MainView*)[self superview] resetDrawType];
and
[(MainView*)self.superview resetDrawType];
……什么不起作用。我了解了非正式协议,所以我将此代码添加到 MainView.h
@interface NSObject ( resetters )
- (void) resetDrawType;
@end
但还是什么都没有。
接下来我发现了这个选择器的事情并在子视图中尝试了这个:
if ([self.superview respondsToSelector:@selector(resetDrawType:)])
[self.superview performSelector:@selector(resetDrawType) withObject:nil];
它也不起作用。我究竟做错了什么?感谢您的帮助。