如何从不同的类调用方法?

时间:2011-04-20 11:11:42

标签: iphone

所以,我试图在我的Brain类中创建一个共享方法,它将检查按下按钮上的标签(项目按钮位于不同的类中),然后相应地将一个图像添加到ShoppingList视图中,这意味着添加的顺序(添加的第一张图像位于0,0位置,第二位置位于80,0等位置。)

我有早餐课,代表早餐食材,我想在另一个名为ShoppingList的视图中添加一张茶的照片。

我在Brain中编写了一个方法,将一个图像添加到imageView并返回一个imageView,然后将其本地传递给按下的按钮。

它构建但是当我按下Tea按钮时,应用程序崩溃。

这是我的代码:

Brain.h

@interface Brain : NSObject {
@private
    UIImage *image;
    UIImageView *imageView;

}

@property (retain) UIImageView *imageView;
@property (retain)  UIImage *image;

- (id)performOperation:(NSString *)operation;
@end

Brain.m

@implementation Brain

@synthesize imageView;
@synthesize image;

- (UIImageView *)performOperation:(NSString *)operation
{
    if ([operation isEqual:@"Tea"]) {
        image = [UIImage imageNamed:@"Tea_photo.jpg"];
        imageView = [[UIImageView alloc]initWithImage:image];

        imageView.frame = CGRectMake(0, 0, 80, 80);

        return imageView;


        //[shoppingList.view addSubview:imageView];
        //[imageView release];

    }

    else return 0;
}

@end

Breakfast.h

@interface Breakfast : UIViewController {

    IBOutlet ShoppingList *shoppingList;
    Brain *brain;

}
- (IBAction)addItemToShoppingList:(UIButton *)sender;

- (IBAction)goToShoppingList;

- (IBAction)goBack;


@end

Breakfast.m

@implementation Breakfast

- (Brain *)brain
{
    if (!brain) brain = [[Brain alloc] init]; 
    return brain;

}



- (IBAction)addItemToShoppingList:(UIButton *)sender
{
    NSString *operation = [[sender titleLabel] text];
    UIImageView *imageView = [[self brain] performOperation:operation];
    [shoppingList.view addSubview:self.brain.imageView];

    //UIImageView *imageView = [[UIImageView alloc]initWithImage:image];

    //imageView.frame = CGRectMake(0, 0, 80, 80);


    //[shoppingList.view addSubview:imageView];
    //[imageView release];

}
- (IBAction)goToShoppingList
{
    [self presentModalViewController:shoppingList animated:NO];
}

- (IBAction)goBack
{
    [self dismissModalViewControllerAnimated:NO];
}

@end

请帮助,这是我的论文。

2 个答案:

答案 0 :(得分:1)

IBOutlet ShoppingList *shoppingList;

为何选择此IBOutlet?不是ShoppingList您创建的类。这并不能解决你的崩溃问题。为此你需要发布崩溃日志......

在您的代码中,我看不到allocation的任何shoppingList,所以您如何能够使用它。您需要allocateBrain中的对象,否则它没有任何意义。

答案 1 :(得分:0)

我没有查看你的代码。但根据您的描述,我建议您创建一个协议