UITextField.text保持返回null

时间:2012-05-02 12:52:51

标签: objective-c ios ios5 uiviewcontroller

我为这个UIViewController创建了一个委托,我传入一个雇员名称来设置一个UITextField。但是,无论我做什么,正如你所看到的,它都会产生(null)。但是,我有一个日期标签,以类似的方式填充,但它正常工作。我把它作为参考。我错过了一些简单的事情。但是,现在我不敢盯着它......

有什么想法吗?感谢。

@interface TimesheetEntryViewController()
@property (weak, nonatomic) IBOutlet UILabel *datelabel;
@property (weak, nonatomic) IBOutlet UITextField *employeeTextField;

@end

@implementation TimesheetEntryViewController
    @synthesize tableView = _tableView;
    @synthesize datelabel = _datelabel;
    @synthesize employeeName = _employeeName;
    @synthesize employeeTextField = _employeeTextField;

-(void)setEmployeeNameString:(NSString *)lemployeeNameString
{
    self.employeeTextField.text = lemployeeNameString;
    NSLog(@"%@:%@", lemployeeNameString, self.employeeTextField.text);
}

结果:2012-05-02 08:42:50.137 rbTimesheet [7855:11303] Bob Smith :( null)

-(void)changeDateViewController:(ChooseDateViewController *)ntvc didChooseDate:(NSDate     *)lDate
{
    NSDateFormatter *df = [[NSDateFormatter alloc] init];
    df.dateStyle = NSDateFormatterMediumStyle;
    self.datelabel.text = [NSString stringWithFormat:@"%@",
                       [df stringFromDate:lDate]];
    [self dismissModalViewControllerAnimated:YES];
}

6 个答案:

答案 0 :(得分:2)

我已经通过拖放xcode 5映射了文本字段,所以它没有合成,但我也尝试通过手动合成来解决这个问题,但它没有用。

我通过在viewDidLoad方法中的文本字段对象中指定空字符串来解决此问题

_txtDialedNumber.text = @ “”;

注意: - 虽然使用这个我没有合成textfield对象,它在Xcode 5.0中工作(在iPhone 5 IOS 6中测试)

答案 1 :(得分:1)

所以我有同样的问题,经过谷歌搜索和遇到这样的多个帖子我的问题是一个开发人员正在做这个(在某种程度上以前版本的xCode工作)我从一个类似的项目切割和粘贴

-(void)setTextFieldDelegates{
    self.usernameTextField = [[UITextField alloc] init];
    self.passwordTextField = [[UITextField alloc] init];

    [self.usernameTextField setDelegate: self];
    [self.passwordTextField setDelegate: self];
}

所以尽管插座是连接的,他还是以某种方式重新分配它并且它正在工作。

答案 2 :(得分:0)

在Interface Builder中检查文本字段和插座之间的连接是否正确。

答案 3 :(得分:0)

使用确认您是否已将子类化为uitextField  textField=[[UITextField alloc]init]

如果您已经这样做了,尝试将其从代码中移除。我遇到了同样的问题,我通过删除这些行来实现它。

答案 4 :(得分:0)

也许你在加载视图之前调用setEmployeeNameString:这应该会给你null。

答案 5 :(得分:-1)

看起来您正在覆盖文本字段的自动setter / getter。使用@synthesize的重点是为您节省一些代码,并为自己设置它们而烦恼。

我的猜测是你没有正确设置代表。你说当前的视图控制器文本字段应该得到日期,然后你关闭模态视图杀死那里保存的值。

我会将你的参考从弱变为强,并摆脱你的二传手。它已经为你完成了,不需要搞砸了。