我是一个绝对的初学者,我需要一个按钮来反转两个文本字段:
text1< - > text2
- (IBAction)swapText {
name.text = surname.text;
surname.text = name.text;
}
我知道我必须保留这些值然后释放它们,但我不确定如何写它。
答案 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方法中释放它们)。