Как настроить кнопку для инвертирования двух текстовых полей - PullRequest
0 голосов
/ 26 сентября 2011

Я абсолютный новичок, и мне нужна кнопка для инвертирования двух текстовых полей:
text1 <-> text2

- (IBAction)swapText {
    name.text = surname.text;
    surname.text = name.text;
}

Я знаю, что мне нужно сохранить значения изатем отпустите их, но я не уверен, как это написать.

Ответы [ 3 ]

1 голос
/ 26 сентября 2011

Это довольно просто: единственный текст / строка NSS, которую вы должны сохранить, - это тот, который перестанет удерживаться самим UITextField, а именно name.text, который вы замените на surname.text.

- (IBAction)swapText {
  NSString* temp = [name.text retain];
  name.text = surname.text;
  surname.text = temp;
  [temp release];
}
0 голосов
/ 26 сентября 2011

На основании вашего кода ваш текст в первом текстовом поле будет потерян. Самый простой способ исправить это - объявить временный объект NSString, который будет содержать строку, содержащуюся в name.text:

- (IBAction)swapText{

  // create a temp string to hold the contents of name.text
  NSString *tempString = [NSString stringWithString: name.text];

  name.text = surname.text;
  surname.text = tempString;
}

Поскольку вы используете точечную запись, предполагается, что «имя» и «фамилия» являются свойствами для ссылок IBOutlet на оба текстовых поля, которые вы хотите поменять местами. Если это так, если у вас есть «сохранить» для обоих этих свойств, это будет заботиться об управлении памятью (если вы освободите их в методе dealloc в файле .m).

0 голосов
/ 26 сентября 2011

Единственными объектами, о которых вам нужно позаботиться, будет выделение / освобождение UITextFields.Предполагая, что ваши UITextfields являются ivars (объявленными в вашем заголовочном файле), вы можете использовать следующий код:

- (void)viewDidLoad 
{
  [super viewDidLoad];
  CGRect b = [[self view] bounds];

  _txt1 = [[UITextField alloc] initWithFrame:CGRectMake(CGRectGetMidX(b)-100, 50, 200, 29)];
  [_txt1 setBorderStyle:UITextBorderStyleRoundedRect];
  [[self view] addSubview:_txt1];

  _txt2 = [[UITextField alloc] initWithFrame:CGRectMake(CGRectGetMidX(b)-100, 100, 200, 29)];
  [_txt2 setBorderStyle:UITextBorderStyleRoundedRect];
  [[self view] addSubview:_txt2];

  UIButton* btnSwap = [UIButton buttonWithType:UIButtonTypeRoundedRect];
  [btnSwap setFrame:CGRectMake(CGRectGetMidX(b)-75, 150, 150, 44)];
  [btnSwap setTitle:@"Swap Text" forState:UIControlStateNormal];
  [btnSwap addTarget:self action:@selector(tappedSwapButton) forControlEvents:UIControlEventTouchUpInside];
  [[self view] addSubview:btnSwap];
}

- (void)tappedSwapButton
{
  NSString* text1 = [_txt1 text];
  NSString* text2 = [_txt2 text];

  [_txt2 setText:text1];
  [_txt1 setText:text2];
}

- (void)dealloc
{
  [_txt1 release];
  [_txt2 release];

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