Textfield返回(null)无论如何

时间:2012-01-23 08:20:28

标签: objective-c cocoa-touch uikit null uitextfield

我已经搜索了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)....
}

2 个答案:

答案 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;