3

Class methodクラスから別のクラスにaを呼び出す必要があり、実際にはクラスメソッドに。を渡す必要がありUIImageます。だから私はを作成し、ボタンNSObjectでそれを呼び出しましたViewcontroller

とどこに電話するUIImageViewか..私が間違っているコードを確認してください..

画像を呼び出すためにメソッドにどのような変更が必要ですか

Zaction.h

@interface ZAction : NSObject

@property (retain) NSString *title;
@property (assign) id <NSObject> target;
@property (assign) SEL action;
@property (retain) id <NSObject> object;
@property(retain) UIImageView *image;

+ (ZAction *)actionWithTitle:(NSString *)aTitle target:(id)aTarget action:(SEL)aAction object:(id)aObject image:(UIImageView *)Aimage;;

ZAction.m

@implementation ZAction

@synthesize title;
@synthesize target;
@synthesize action;
@synthesize object,image;

 + (ZAction *)actionWithTitle:(NSString *)aTitle target:(id)aTarget action:(SEL)aAction object:(id)aObject image:(UIImageView *)Aimage;
{
    ZAction *actionObject = [[[ZAction alloc] init] autorelease];
    actionObject.title = aTitle;
    actionObject.target = aTarget;
    actionObject.action = aAction;
    actionObject.object = aObject;
    actionObject.image=Aimage;
    return actionObject;
}

ViewController.m

 #import "Zaction.h"
- (IBAction)test4Action:(id)sender
{
    UIImageView *image1=[[UIImageView alloc]initWithFrame:CGRectZero];
    ZAction *destroy = [ZAction actionWithTitle:@"Clear" target:self action:@selector(colorAction:) object:[UIColor clearColor] image:image1];
    ZAction *sec = [ZAction actionWithTitle:@"Unclear" target:self action:@selector(colorAction:) object:[UIColor clearColor] image:image1];
    image1.image=[UIImage imageNamed:@"icon2.png"];
    [self.view addSubview:image1];


   ZActionSheet *sheet = [[[ZActionSheet alloc] initWithTitle:@"Title" cancelAction:nil destructiveAction:destroy
                otherActions:[NSArray arrayWithObjects:option1,  nil]] autorelease];
    sheet.identifier = @"test4";
    [sheet showFromBarButtonItem:sender animated:YES];
}
4

1 に答える 1

1

コードにはいくつかの重大な問題があります。

  • UIImageView image1はCGRectZeroフレームで初期化されています-フレームが(0,0,0,0)であるため、表示されない可能性がありますか?画像のサイズなど、実際のサイズを与えるTr。

  • その次に、ZActionオブジェクトのsecとdestroyは、test4Actionメソッドの最後で消えます。これは、それらが自動解放され、どこにも保持されないためです。

  • また、コードに不要なセミコロンがいくつかあります。特に、actionWithTitleのメソッド実装の背後にあるセミコロンを削除すると、セミコロンの位置が間違っていると厄介なエラーが発生する可能性があります(if()ステートメントの後など)。

  • コーディングスタイルにも取り組んでください(特に変数の名前付け-c言語のキーワードは適切な属性名(アクションクラスの「オブジェクト」)にはなりません。AimageはaImageViewである必要があります)

于 2013-02-19T21:24:02.057 に答える