Ich habe eine Ansicht basierte Anwendung erstellt. Und Hinzugefügt neue Klasse, die von UIView erstreckt. Diese Klasse enthält einige Steuerelemente (einfache Steuerelemente). Jetzt möchte ich dieses Steuerelement anzeigen/ausblenden, wenn der Benutzer auf etwas klickt. Die Steuerung sollte als Overlay-Fenster angezeigt werden. Über allen anderen Kontrollen. Ich versuche, dies zu tun wie:Benutzerdefiniertes Steuerelement wird nicht im Fenster angezeigt
Alles geht gut, debug in benutzerdefinierten Steuerungscode, aber nichts auf dem Bildschirm angezeigt. Ich habe versucht, es manuell hinzuzufügen, und es funktioniert, aber ich muss es in der Laufzeit hinzufügen. Was könnte der Grund dafür sein, dass die Kontrolle nicht angezeigt wird?
komplette Code für 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];
}
Und es ist Header:
@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
Aber wie erstellen Sie 'myOverlayChannelPicker'? Hast du verifiziert, dass es nicht null ist? –
Ich habe zu Header hinzugefügt: OverlayChannelPicker * myOverlayChannelPicker; und hinzugefügt Eigenschaft/synthetisieren dafür. Und dann rufe [self.view addSub ...] auf; – 1110
Ich habe dies hinzugefügt, funktioniert aber immer noch nicht (es ist nicht NIL): - (IBAction) btnOk_Click { \t myOverlayChannelPicker = [[OverlayChannelPicker alloc] init]; \t if (myOverlayChannelPicker! = Null) { \t \t [self.view addSubview: myOverlayChannelPicker]; \t} } – 1110