如何设置按钮以反转两个文本字段

时间:2011-09-26 16:59:10

标签: objective-c ios uitextfield

我是一个绝对的初学者,我需要一个按钮来反转两个文本字段:
text1< - > text2

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

我知道我必须保留这些值然后释放它们,但我不确定如何写它。

3 个答案:

答案 0 :(得分:1)

这很简单:你必须保留的唯一文本/ NSString是UITextField本身不再保留的文本/ NSString,即name.text将由{{1}替换}。

surname.text

答案 1 :(得分:0)

您需要处理的唯一对象是分配/取消分配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];
}

答案 2 :(得分:0)

根据您提供的代码,第一个文本字段中的文本将丢失。解决这个问题的最简单方法是声明一个临时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;
}

由于您使用点表示法,因此假定“name”和“surname”是IBOutlet引用您要交换的两个文本字段的属性。如果是这种情况,只要你对这两个属性都“保留”,就会负责内存管理(只要你在.m文件的dealloc方法中释放它们)。