Пользовательский элемент управления не отображается в окне - PullRequest
1 голос
/ 01 декабря 2010

Я создал приложение на основе представления. И добавлен новый класс, который расширяется от 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

1 Ответ

0 голосов
/ 01 декабря 2010

Вы, вероятно, хотите сделать звонок так:

[self.view addSubview:myOverlayChannelPicker];

Судя по вашему опубликованному образцу кода, я должен предположить, что вы ранее не занимались разработкой объективных программ. Если это так, вы, вероятно, должны начать здесь Введение в язык программирования Objective-C , чтобы охватить основы.

...