下面是简单的代码:
自定义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
}当我按下按钮时,图像视图不会改变。我该如何解决这个问题呢?非常感谢!
发布于 2013-03-11 17:48:09
首先,这里不需要setNeedsDisplay。setNeedsDisplay用于重新绘制视图(如果需要,它会在内部调用视图的drawRect:方法),而这并不是您想要的。
其次,您已经将按钮的类指定为MyButton,但在实际的.h和.m文件中,它分别指定为@interface PaiLifeReadingListButton和@implementation PaiLifeReadingListButton。
另外,视图和按钮不是用框架初始化的。但我假设你已经这样做了,因为你唯一的问题是图像视图没有改变。
发布于 2013-03-11 18:16:54
在您的code In pressed方法中,您应该更改层次结构中的视图,但只更改对象成员。你可以这样做
myView.myButton.logImageView.image = [UIImage imageNamed:@"other-pic"];https://stackoverflow.com/questions/15334151
复制相似问题