2013-03-11 62 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.Done需要调用setNeedsDisplay。 – dhcdht 2013-03-11 08:42:43

+0

什么是'button',你在哪里添加了'myButton'? – 2013-03-11 08:50:00

+0

@MidhunMP对不起,我犯了一个错误,我改变了代码。 – jxdwinter 2013-03-11 08:56:47

回答

1

首先,您不需要setNeedsDisplay这里。 setNeedsDisplay用于重绘视图(如果需要,它在内部调用视图的drawRect:方法),这不是您想要的。其次,你已经给出了你的按钮类MyButton,但是在实际的.h和.m文件中,它分别给出了@interface PaiLifeReadingListButton@implementation PaiLifeReadingListButton

另一件事,视图和按钮没有用框架初始化。但我认为你已经做到了,因为唯一的问题是图像视图不会改变。

0

在按下方法的代码中,您应该更改层次结构中的视图,但只更改对象成员。你可以像

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