У меня есть uiviewcontroller с именем MainViewController, я добавляю в него подпредставление (имя: DetailView) в событии viewdidload.Когда я нажимаю кнопку в mainviewController, я хочу вызвать метод в subview, напишите что-то.// DetailView является подклассом UIView.
в Mainviewcontroller:
- (void)viewDidLoad {
[super viewDidLoad];
NSArray *nibViews = [[NSBundle mainBundle] loadNibNamed:@"DetailView" owner:self options:nil];
UIView *aView= [nibViews objectAtIndex:0];
aView.tag=100;
self.detailView=aView;
[detailContainer addSubview:self.detailView];
}
-(void) writeAnythingInSubViewsLabel{
//i tried to reach detail UIView
NSArray* subviews = [NSArray arrayWithArray: detailContainer.subviews];
for (UIView *xView in subviews) {
if ([xView isKindOfClass:[UIView class]] && xView.tag==100) {
NSLog(@"%@", xView);
[xView writeSomething:@"hello"];
break;
}
}
}
в DetailView:
-(void) writeSomething:(NSString *)anyText{
NSLog(@"%@", anyText);
}
, но выдает ошибку;[UIView writeSomething]: нераспознанный селектор отправлен в экземпляр .... он также выдает предупреждение перед сборкой, UIView может не отвечать writeSomething ... я знаю, что UIView и DetailView не совпадают.вот почему это дает предупреждение.я пробовал также for (DetailView *xView in subviews) {
, но он никогда не находит тег в цикле.
я надеюсь, что кто-нибудь поможет мне ... РЕДАКТИРОВАТЬ: DetailView.m
#import "DetailView.h"
@implementation DetailView
@synthesize image, button, label;
@synthesize delegate;
- (void)dealloc {
[image release];
[button release];
[label release];
[super dealloc];
}
- (id) initWithCoder: (NSCoder *) decoder {
return self;
}
- (id)initWithFrame:(CGRect)frame {
if ((self = [super initWithFrame:frame])) {
// Initialization code
}
return self;
}
/*
// Only override drawRect: if you perform custom drawing.
// An empty implementation adversely affects performance during animation.
- (void)drawRect:(CGRect)rect {
// Drawing code
}
*/
-(IBAction) backButtonPressed:(id) sender{
[delegate hideDetailView];
}
-(void) writeSomething:(NSString *)anyText{
NSLog(@"%@", anyText);
}
@end