0

简单的代码在这里:

自定义 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];
}

视图控制器.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
}

当我按下按钮时,图像视图不会改变。我怎样才能解决这个问题?非常感谢!

4

2 回答 2

1

首先,你不需要setNeedsDisplay这里。setNeedsDisplay用于重绘视图(drawRect:如果需要,它会在内部调用视图的方法),这不是您想要的。

其次,您将按钮的类指定为MyButton,但在实际的 .h 和 .m 文件中,它分别指定为@interface PaiLifeReadingListButton@implementation PaiLifeReadingListButton

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

于 2013-03-11T09:48:09.037 回答
0

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

myView.myButton.logImageView.image = [UIImage imageNamed:@"other-pic"];
于 2013-03-11T10:16:53.780 回答