Возвращение текстового поля (ноль) независимо от того, что - PullRequest
2 голосов
/ 23 января 2012

Я искал stackoverflow для похожих проблем и нашел некоторые, но они не решили мою проблему. У меня есть 3 текстовых поля (имя, адрес, телефон), из которых я хочу получить текст. Я объявил их в файле (.h), а также @property, а затем @synthesized их в файле (.m). У меня есть IBAction для кнопки, объявленной в (.h) файле и связанной с ней. Теперь, когда я нажимаю эту кнопку, я хочу получить значения из текстовых полей, но NSLog показывает, что они все (нулевые), даже прежде чем я что-то сделаю с текстовыми полями. Это очень простой код, я не могу понять, почему он возвращает ноль.

//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 голосов
/ 23 января 2012

Просто измените ниже код

напишите синтезируйте как это

@synthesize name;
@synthesize phone;
@synthesize address;
@synthesize status;

вместо

    @synthesize name=_name;
@synthesize phone=_phone;
@synthesize address=_address;
@synthesize status=_status;
0 голосов
/ 23 января 2012

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;
}
...