I'v создал приложение на основе представления. И добавлен новый класс, который простирается от UIView. Этот класс содержит в себе некоторые элементы управления (простые элементы управления). Теперь я хочу отображать/скрывать этот элемент управления, когда пользователь нажимает на что-то. Управление должно отображаться как окно оверлея. По всем другим элементам управления. Я стараюсь это делать так:Пользовательский контроль не отображается в окне
- (void)viewDidLoad {
[super viewDidLoad];
addSubview:myOverlayChannelPicker;
}
Все идет хорошо, отлаживается в пользовательский код управления, но ничего не отображается на экране. Я попытался добавить его вручную, и он работает, но мне нужно добавить его во время выполнения. Что может быть причиной отсутствия контроля?
Полный код для OverlayChannelPicker
@implementation OverlayChannelPicker
@synthesize myImage;
@synthesize img1;
@synthesize img2;
- (id)initWithFrame:(CGRect)frame {
if ((self = [super initWithFrame:frame])) {
// Initialization code
}
return self;
}
- (void)awakeFromNib{
img1 = [UIImage imageNamed:@"imgTest.jpg"];
img2 = [UIImage imageNamed:@"imgTest2.jpg"];
arrayOfImages = [[NSMutableArray alloc] init];
[arrayOfImages addObject:img1];
[arrayOfImages addObject:img2];
[arrayOfImages addObject:img1];
[arrayOfImages addObject:img2];
[arrayOfImages addObject:img1];
[arrayOfImages addObject:img2];
[arrayOfImages addObject:img1];
[arrayOfImages addObject:img2];
[arrayOfImages addObject:img1];
[arrayOfImages addObject:img2];
[arrayOfImages addObject:img1];
[arrayOfImages addObject:img2];
scrollView = [[UIScrollView alloc] init];
scrollView.scrollEnabled = YES;
scrollView.pagingEnabled = NO; // for smooth scroll
scrollView.directionalLockEnabled = YES;
scrollView.showsVerticalScrollIndicator = NO;
scrollView.showsHorizontalScrollIndicator = NO;
scrollView.delegate = self;
//scrollView.backgroundColor = [UIColor blueColor];
scrollView.autoresizesSubviews = YES;
scrollView.frame = CGRectMake(0, 150, 320, 128);
[scrollView setContentSize:CGSizeMake(1620, 128)];
[self addSubview:scrollView];
UIImage *imageToAdd;
int x = 0;
int y = 0;
for(imageToAdd in arrayOfImages)
{
UIImageView *temp = [[UIImageView alloc] initWithImage:imageToAdd];
temp.frame = CGRectMake(x, y, 128, 128);
temp.userInteractionEnabled = YES;
x += 135;
UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(imageTapped:)];
[temp addGestureRecognizer:tap];
[scrollView addSubview:temp];
}
}
- (void)imageTapped:(UIGestureRecognizer *)sender
{
UIImageView *iv = (UIImageView *)[sender view];
UIImage *image = [iv image];
UIImage *it = [arrayOfImages indexOfObject:image];
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:1];
[UIView setAnimationTransition:UIViewAnimationTransitionFlipFromLeft forView:iv cache:YES];
if(it == img1)
it = img2;
else
it = img1;
[UIView commitAnimations];
}
И это заголовок:
@interface OverlayChannelPicker : UIView <UIScrollViewDelegate>{
IBOutlet UIImageView *myImage;
UIImage *img1;
UIImage *img2;
IBOutlet UIScrollView *scrollView;
int view1Index;
int view2Index;
NSMutableArray *arrayOfImages;
}
@property (nonatomic, retain) UIImageView *myImage;
@property (nonatomic, retain) UIImage *img1;
@property (nonatomic, retain) UIImage *img2;
@property (nonatomic, retain) UIScrollView *scrollView;
- (void)awakeFromNib;
@end
Но как вы создаете `myOverlayChannelPicker`? Вы подтвердили, что это не ноль? – 2010-12-01 15:23:02
Я добавил в заголовок: OverlayChannelPicker * myOverlayChannelPicker; и добавил свойство/синтезировал для него. А затем вызовите [self.view addSub ...]; – 1110 2010-12-01 19:36:15