Пользовательский UIButton не может взаимодействовать со связанным UIImageView - PullRequest
3 голосов
/ 09 июля 2010

Я застрял на следующем коде. Некоторые мои классы UIButton Extended не могут показать или скрыть UIImageView

Мои методы вызываются, а viewview не ноль.

Вот код:

@interface UILinkedImageButton : UIButton {
    IBOutlet UIImageView *linkImageView;
}

@property (nonatomic, retain) IBOutlet UIImageView *linkImageView;

@end

#import "UILinkedImageButton.h"

@interface UILinkedImageButton ()
- (void)showImage;
- (void)hideImage;
@end
-------------------------------------------------------------------------------------------------

@implementation UILinkedImageButton


@synthesize linkImageView;

- (void) dealloc{

    [linkImageView release], linkImageView = nil;
    [super dealloc];
}

- (id) initWithCoder:(NSCoder *)aDecoder
{
    self = [super initWithCoder:aDecoder];

    if(self){
        [self addTarget:self action:@selector(showImage) forControlEvents:UIControlEventTouchDown];
        [self addTarget:self action:@selector(hideImage) forControlEvents:UIControlEventTouchUpInside];
        [self addTarget:self action:@selector(hideImage) forControlEvents:UIControlEventTouchUpOutside];
    }

    return self;
}

- (void)showImage
{
    if(self.imageView){
        NSLog(@"UILinkImageButton - showImage - currentStatus: %@", self.imageView);
        self.imageView.hidden = NO;
        [self.superview layoutIfNeeded];
    }   
}

- (void)hideImage
{
    if(self.imageView){
        NSLog(@"UILinkImageButton - hideImage");
        self.imageView.hidden = YES;
    }
}

@end

1 Ответ

2 голосов
/ 09 июля 2010

Как отмечает Томас Мюллер в комментарии, я тоже считаю, что действия должны быть в контроллере.

Кроме того, в вашем коде вы изменяете скрытое свойство объекта 'imageView', в то время как пользовательский вид изображенияВы создали в себе объявление 'linkImageView'.Код не выдает ошибку, потому что 'imageView' - это свойство кнопки только для чтения, объявленное в UIButton , и оно представляет представление кнопки * , а не linkImageView .

Надеюсь, что этопомогает.

Спасибо, Swapnil

...