我正在尝试使用故事板中的一个简单按钮从另一个类调用方法。 这是我的文件:
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?
我在哪里做错了?
答案 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");
}