如何使用Xcode中的简单按钮从另一个类调用方法

时间:2012-06-12 15:02:45

标签: objective-c ios

我正在尝试使用故事板中的一个简单按钮从另一个类调用方法。 这是我的文件:

ViewController.m

//  ViewController.h


#import <UIKit/UIKit.h>
#import <Foundation/Foundation.h>
#import "PrintHello.h"

@interface ViewController : UIViewController <NSObject>{

PrintHello *printMessage;
}

@property (nonatomic, retain) PrintHello *printMessage;
@end

ViewController.m

//  ViewController.m
#import "ViewController.h"
@interface ViewController ()
@end

@implementation ViewController
@synthesize printMessage;


- (void)viewDidLoad{
[super viewDidLoad];
NSLog(@"ViewDidLoad loaded");
}


- (IBAction)Button01:(id)sender{

self.printMessage = [[PrintHello alloc] init]; // EDIT: THIS LINE WAS MISSING NOW IT WORKS

[self.printMessage Print];
NSLog(@"Button01 Pressed");    
}
@end

PrintHello.h

//  PrintHello.h
#import <Foundation/Foundation.h>

@interface PrintHello : NSObject
-(void) Print;
@end

PrintHello.m

// PrintHello.m

#import "PrintHello.h"
@implementation PrintHello 

-(void)Print{ NSLog(@"Printed");}

@end

在故事板上还有一个与Viecontroller相连的Button01。 从Log我知道:

加载了viewDidLoad 按下时按下按钮:) 但是没有调用方法Print?

我在哪里做错了?

2 个答案:

答案 0 :(得分:1)

在致电[self.printMessage Print];之前,我认为您需要提出self.printMessage = [[PrintHello alloc] init];

答案 1 :(得分:0)

正如woz所说,你还没有初始化printMessage,所以对象还不存在!您可能希望在ViewController.m文件的viewDidLoad中初始化它,而不是在按钮单击中反复重新初始化该对象。

-(void)viewDidLoad
{
    [super viewDidLoad];
    self.printMessage = [[PrintHello alloc] init];
    NSLog(@"ViewDidLoad loaded");
}