我已经搜索了stackoverflow以查找类似的问题并找到了一些,但是他们没有解决我的问题。我有3个文本字段(名称,地址,电话),我想从中获取文本。我已经在(.h)文件中声明了它们,也在@property中声明了它们,然后在(.m)文件中对它们进行了@synthesized。我有一个IBAction,用于在(.h)文件中声明的按钮并正确链接。现在,当我按下这个按钮时,我想从文本字段中获取值,但NSLog显示它们都是(null)甚至在我对textfields做任何事情之前。它非常简单的代码,我无法理解为什么它返回null。
//CoreDataViewController.h
@interface coreDataViewController : UIViewController {
UITextField *name;
UITextField *address;
UITextField *phone;
UILabel *status;
}
@property (strong, retain) IBOutlet UITextField *name;
@property (strong, retain) IBOutlet UITextField *address;
@property (strong, retain) IBOutlet UITextField *phone;
@property (strong, retain) IBOutlet UILabel *status;
- (IBAction) saveData;
@end
//CoreDataViewController.m
#import "coreDataViewController.h"
#import "AppDelegate.h"
@implementation coreDataViewController
@synthesize name=_name;
@synthesize phone=_phone;
@synthesize address=_address;
@synthesize status=_status;
- (void) saveData
{
NSLog(@"Name %@ Address %@ Phone %@",self.name.text,self.address.text,self.phone.text);
...some more code (commented out)....
}
答案 0 :(得分:0)
IMO你错误地合成了iVars 您使用语法:
synthesize name=_name;
但是在.h文件中你有:
@interface coreDataViewController : UIViewController {
UITextField *name;
UITextField *address;
UITextField *phone;
UILabel *status;
}
将此部分更改为:
@interface coreDataViewController : UIViewController {
UITextField *_name;
UITextField *_address;
UITextField *_phone;
UILabel *_status;
}
答案 1 :(得分:0)
只需更改以下代码
像这样编写合成
@synthesize name;
@synthesize phone;
@synthesize address;
@synthesize status;
ratherthen
@synthesize name=_name;
@synthesize phone=_phone;
@synthesize address=_address;
@synthesize status=_status;