Возникли проблемы с UITextField и NSString - PullRequest
0 голосов
/ 27 июля 2011

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

Я отображаю UITextField следующим образом:

UITextField *nameTextField = [[UITextField alloc] initWithFrame:CGRectMake(110, 10, 185, 30)];
nameTextField.delegate = self;
[nameTextField addTarget:self action:@selector(editingEnded) forControlEvents:UIControlEventEditingDidEnd];
[nameTextField setEnabled: YES];
self.myTextField = nameTextField;
[nameTextField release];

Тогда у меня есть:

- (void)editingEnded
{
    NSString *tempRoutineName = self.myTextField.text;
    self.routineName = tempRoutineName;
    [tempRoutineName release];
 }

Ответы [ 3 ]

3 голосов
/ 27 июля 2011

Вместо редактирования Ended, внедрите протокол UITextFieldDelegate.Перейдите к методу textFieldDidEndEditing и переназначьте значение текста в нем.

Как,

-(void) textFieldDidEndEditing:(UITextField *)textField{

if (textField.tag ==0){
    self.myTextField = textField; 

  // myTextField is a property
    }

Теперь в методе viewDidLoad или viewWillAppear, продолжайте и присвойте это значение обратно textField.

При необходимости используйте [tableView reloadData], если это используется в табличном представлении, или используйте [self reloadInputViews] (при необходимости).

С другой стороны, все логично.Ничего слишком сложного в коде.

0 голосов
/ 16 августа 2011

По моему мнению:

NSString *tempRoutineName = self.myTextField.text;
self.routineName = tempRoutineName;
[tempRoutineName release];

У вас нет собственного tempRoutineName для освобождения.Закомментируйте релиз и проверьте.

0 голосов
/ 16 августа 2011

Используйте метод UITextFieldDelegate, который является textFieldDidEndEditing, который вызывается по окончании редактирования

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...