2012-05-07 4 views
0

Я добавляю UITextField в ячейку.Доступ к UITextField в CellForRowAtIndexPath

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath  *)indexPath 
{ 
    static NSString *CellIdentifier = @"Cell"; 
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 
if (cell == nil) { 
    cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault  reuseIdentifier:CellIdentifier]; 
} 


myLoc = [[UITextField alloc] initWithFrame:CGRectMake(35, 10, 250, 40)]; 
myLoc.adjustsFontSizeToFitWidth = YES; 
myLoc.textColor = [UIColor blackColor]; 
myLoc.textAlignment = UITextAlignmentCenter; 
myLoc.placeholder = @"Enter Location"; 
myLoc.returnKeyType = UIReturnKeyDone; 
myLoc.autocorrectionType = UITextAutocapitalizationTypeNone; 
myLoc.tag = indexPath.row; 
myLoc.delegate = self; 
[myLoc setEnabled:YES]; 
[cell addSubview:myLoc]; 

return cell; 
} 

и в textFieldShouldReturn я хотел бы написать текст из текстового поля в изменяемый массив, и магазин в NSUserDefaults.

-(BOOL)textFieldShouldReturn:(UITextField *)textField{ 

[myLoc resignFirstResponder]; 

[locationArray addObject:textField.text]; 
locName = [NSUserDefaults standardUserDefaults]; 
[locName setObject:locationArray forKey:@"textName"]; 
[locName synchronize]; 

NSLog(@"Done pressed %@",myLoc.text); 

return YES; 

}

... но myLoc.text всегда нуль какие-либо идеи для меня?

ответ

0

Ваш текст никогда не должен быть NULL, так как его NSString. Вы уверены, что говорите о тексте из текстового поля?

Какие выходы при добавлении NSLog (@% "@", textField.text); к вашему обязательному методу?

Вы уверены, что вы ввели текст? Кроме того, даже без ввода, вы должны получать @ "" вместо nil.

+0

проблема решена с помощью myLoc = textField в textFieldShouldReturn – HugoBoss

+0

Это ничего не должно делать, если только вы не вызывали текстовое свойство myLoc, а не экземпляр textField, заданный в методе делегата. Это то, что вы делали? – RileyE

2

В методе делегата не используйте myLoc для ссылки на textField, но используйте фактический указатель textField, предоставленный как параметр функции. Это должно фактически указывать на правильное текстовое поле, и поэтому textField.text должен иметь правильное значение.

На боковой ноте: Где вы определяете myLoc? Похоже, вы пытаетесь установить свойство на своем контроллере view. Таким образом, вы всегда будете перезаписывать свойство. Для этого вам совсем не нужно свойство, поэтому просто определите myLoc локально в области функций, например UILabel *myLoc

+0

собственность удалена :-) – HugoBoss

1

Вам лучше создать свой собственный UITableViewCell. Вы можете посмотреть, как его создать здесь: tutorial

Пытаться прикрепить к существующему UITableViewCell сложно в лучшем случае и невозможно в худшем случае. Вам лучше с пользовательскими ячейками.

+1

Оуэн прав. Подкласс также приводит к более чистым кодам и лучшей ремонтопригодности. –

+0

thx, я попробую! – HugoBoss

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