2013-03-11 4 views
0

Простой код здесь:UIView setNeedsDisplay не работает

Пользовательские MyButton.h

@interface PaiLifeReadingListButton : UIButton 
@property (strong, nonatomic) UIImageView *logoImageView; 
@end 

Пользовательские MyButton.m

@implementation PaiLifeReadingListButton 
@synthesize logoImageView = _logoImageView; 
-(id)init 
{ 
    _logoImageView = [[UIImageView alloc] initWithFrame:CGRectMake(33.0, 20.0, 80.0, 80.0)]; 
    [_logoImageView setImage:[UIImage imageNamed:@"pic"]]; 
    [self addSubview: _logoImageView]; 
} 
@end 

Пользовательские MyView.h:

@property (strong, nonatomic) Mybutton *mybutton; 

Пользовательские MyView.m:

-(id) init 
{ 
    myButton = [[MyButton alloc] init]; 
    [self addSubview:myButton]; 
} 

ViewController.m:

@synthesize myView; 
- (void)viewDidLoad 
{ 
    myView = [[Myview alloc] init]; 
    [myView.myButton addTarget:self action:@selector(pressed:) forControlEvents:UIControlEventTouchDown]; 
    self.view = myView; 
} 
-(void)pressed : (MyButton *)button 
{ 
    UIImageView *newImageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"other-pic"] highlightedImage:nil]; 
    myView.myButton.logImageView = newImageView; 
    [self.view setNeedsDisplay]; //----this does not work 
} 

При нажатии этой кнопки ImageView не меняется. Как я могу это исправить? Большое спасибо!

+1

Установите newImageView.frame = logImageView.frame. Не нужно вызывать setNeedsDisplay. – dhcdht

+0

Что такое 'button' и где вы добавили' myButton'? –

+0

@MidhunMP Извините за это, я допустил ошибку, и я меняю код. – jxdwinter

ответ

1

Первое, что вам не нужно setNeedsDisplay здесь. setNeedsDisplay используется для перерисовки представления (он внутренне вызывает метод вида drawRect:, если требуется), который не является тем, что вы хотите.

Во-вторых, вы присвоили классу свою кнопку MyButton, но в файлах .h и .m указаны как @interface PaiLifeReadingListButton и @implementation PaiLifeReadingListButton соответственно.

Другое дело, что вид и кнопка не инициализируются рамкой. Но я предполагаю, что вы уже это сделали, поскольку ваша единственная проблема заключается в том, что изображение не меняется.

0

В вашем коде в нажатом методе вы должны изменить представления в иерархии, но вы изменяете только объект. Вы можете сделать что-то вроде

myView.myButton.logImageView.image = [UIImage imageNamed:@"other-pic"]; 

 Смежные вопросы

  • Нет связанных вопросов^_^