2012-05-02 3 views
1

Я создал делегат для этого UIViewController, и я передаю имя сотрудника, чтобы установить UITextField. Но, независимо от того, что я делаю, как вы можете видеть, это приводит к (null). Тем не менее, у меня есть разделитель данных, который заполняется аналогичным образом, но он работает правильно. Я включаю это для справки. Мне не хватает чего-то простого. Но теперь я не смотрю на это ...UITextField.text сохраняет значение 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: (нуль)

-(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]; 
} 
+0

ли текст визуально отображается на текстовом поле? – JomanJi

ответ

0

Проверьте соединение между текстовым полем и выходным отверстием исправить в Interface Builder.

+0

Да, это одна из первых вещей, которые я сделал. – Jerry

-1

Похоже, что вы переопределяете автоматический сеттер/получатель для текстового поля. Весь смысл использования @synthesize заключается в том, чтобы сэкономить вам некоторый код и затруднить настройку их самостоятельно.

Я полагаю, вы не устанавливаете право делегата. Вы говорите, что текущее текстовое поле контроллера просмотра должно получить дату, а затем вы отклоняете модальный вид, убивая сохраненное там значение.

Я бы поменял вашу ссылку от слабого к сильному и избавился от вашего сеттера. Это делается для вас уже, нет необходимости загромождать вещи.

0

Проверьте, если вы подклассифицировали uitextField, используя textField=[[UITextField alloc]init].

Если вы это сделали, попробуйте удалить его из кода. У меня была такая же проблема, и я получил ее, удалив эти строки.

+0

Я думаю, что если у вас есть розетка, вам не нужно выделять и инициализировать объект – JomanJi

0

Возможно, вы вызываете setEmployeeNameString: перед загрузкой представления? Это должно дать вам null в результате.

1

Так что я была такая же проблема, и после того, как прибегая к помощи и приходить на несколько сообщений, как этот мой вопрос был разработчиком сотрудник делал это (который работал в предыдущих версиях Xcode как-то), который я вырезать и вставить из аналогичного проекта

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

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

Так что, хотя розетка была подключена, он как-то переписывал ее, и она работала.

2

Я отобразил текстовое поле с помощью перетаскивания в xcode 5, поэтому он не синтезирован, но я также попытался решить эту проблему, синтезировав его вручную, но он не сработал.

Я решил эту проблему путем присвоения пустой строки в объекте текстового поля в методе viewDidLoad

_txtDialedNumber.text = @ «»;

Примечание: -Хотя с помощью этого я не синтезируя объект TextField и он работает для меня в Xcode 5.0 (тестирование в iPhone 5 IOS 6)

Смежные вопросы