У меня есть массив контроллеров представления (есть еще, что я показал):
..
settings = [[settingsSettingTab alloc] initWithNibName:@"settingsTab" bundle:nil];
other = [[otherSettingTab alloc] initWithNibName:@"otherTab" bundle:nil];
..
NSArray *views = [NSArray arrayWithObjects:settings,other, nil];
Затем я перебираю их и присваиваю им некоторые детали, прежде чем нажимать их:
for (int i = 0; i < views.count; i++) {
...
NSString *className = NSStringFromClass([[views objectAtIndex:i] class]);
Class myClass = NSClassFromString(className);
myClass *subView = (myClass*)[views objectAtIndex:i];
[self.scrollView addSubview:subView.view];
}
Как я могу назначить правильный класс для * subView. Это работало нормально, когда у меня был только один тип представления в моем массиве, а затем я просто использовал:
settingTab *subView = (settingTab*)[views objectAtIndex:i];
Но теперь мне нужно проверить и использовать правильный. Я погуглил вопрос, но не уверен, как бы это описал? (динамическая печать? Утиная печать?) Любые указатели были бы очень благодарны.
Спасибо
EDIT:
Вот весь код:
NSArray *titles = [NSArray arrayWithObjects: @"Basics", @"Colours", @"Shapes", @"Settings", @"Other", nil];
basics = [[basicsSettingTab alloc] initWithNibName:@"basicsTab" bundle:nil];
colours = [[colorsSettingTab alloc] initWithNibName:@"colorsTab" bundle:nil];
shapes = [[shapesSettingTab alloc] initWithNibName:@"shapesTab" bundle:nil];
settings = [[settingsSettingTab alloc] initWithNibName:@"settingsTab" bundle:nil];
other = [[otherSettingTab alloc] initWithNibName:@"otherTab" bundle:nil];
NSArray *views = [NSArray arrayWithObjects: basics,colours,shapes,settings,other, nil];
for (int i = 0; i < views.count; i++) {
CGRect frame;
frame.origin.x = self.scrollView.frame.size.width * i + 20;
frame.origin.y = 0;
CGFloat newWidth = 280;
CGFloat newHeight = 320;
CGFloat locx = 0;
CGFloat locy = 0;
CGRect panel = CGRectMake(locx, locy, newWidth, newHeight);
frame.size = panel.size;//self.scrollView.frame.size;
//subview.view.backgroundColor = [colors objectAtIndex:i];
NSString *className = NSStringFromClass([[views objectAtIndex:i] class]);
Class myClass = NSClassFromString(className);
myClass *subView = (myClass*)[views objectAtIndex:i];
[subView.view setFrame:frame];
subView.tabTitle.text = [titles objectAtIndex:i];
[subView.view.layer setCornerRadius:5.0f];
[subView.view.layer setMasksToBounds:YES];
subView.delegate = self;
[self.scrollView addSubview:subView.view];
}
self.scrollView.contentSize = CGSizeMake(self.scrollView.frame.size.width * views.count, self.scrollView.frame.size.height);
pageControl.numberOfPages = views.count;
}