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];
}

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
}

ボタンを押してもイメージビューが変わりません。どうすればこれを修正できますか? どうもありがとうございました!

4

2 に答える 2

1

まず、setNeedsDisplayここは必要ありません。setNeedsDisplayビューを再描画するために使用されます(必要に応じて、ビューのメソッドを内部的に呼び出しますdrawRect:)。これは、必要なものではありません。

次に、ボタンのクラスを として指定しMyButtonましたが、実際の .h および .m ファイルでは@interface PaiLifeReadingListButton、それぞれ およびとして指定されて@implementation PaiLifeReadingListButtonいます。

もう1つのことは、ビューとボタンがフレームで初期化されていないことです。しかし、あなたの唯一の問題は画像ビューが変わらないことなので、あなたはすでにそれを行っていると思います。

于 2013-03-11T09:48:09.037 に答える
0

押されたメソッドのコードでは、階層内のビューを変更する必要がありますが、変更するのはオブジェクト メンバーのみです。次のようなことができます

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