Iphone 将UITextFields输入合并到一个UITextField中

Iphone 将UITextFields输入合并到一个UITextField中,iphone,ios,uitextfield,uitextview,xcode4.3,Iphone,Ios,Uitextfield,Uitextview,Xcode4.3,我是xcode和objective c的新手。我已经问了三次这个问题,但仍然找不到一个好的方法或答案。我有几个uitextfields,它们接受用户输入,并按照使用的iAction的顺序将其添加到combinedtextField中。即用户输入一个字段中的big,下一个字段中的bad,第三个字段中的boy,结果是combinedtextField中的big bad boy -(IBAction)addtextField1: (id)sender { combinedtextField.text

我是xcode和objective c的新手。我已经问了三次这个问题,但仍然找不到一个好的方法或答案。我有几个uitextfields,它们接受用户输入,并按照使用的iAction的顺序将其添加到combinedtextField中。即用户输入一个字段中的big,下一个字段中的bad,第三个字段中的boy,结果是combinedtextField中的big bad boy

-(IBAction)addtextField1: (id)sender
{
 combinedtextField.text = [NSMutableString stringWithFormat:@"%@ %@",
 combinedtextField.text,textField1.text];
}

-(IBAction)addtextField2: (id)sender
{
 combinedtextField.text = [NSMutableString stringWithFormat:@"%@ %@",
             combinedtextField.text,  textField2.text];
}
-(IBAction)addtextField3:(id)sender
{
combinedtextField.text = [NSMutableString stringWithFormat:@"%@ %@",
                   combinedtextField.text,textField3.text];
}
-(IBAction)removetextField1:(id)sender
{
  //////////????????????////////////////
}

-(IBAction)removetextField2: (id)sender
{
  //////////????????????////////////////
}
-(IBAction)removetextField3: (id)sender
{
//////////????????????////////////////
}   
现在这是它变得有趣的地方。我需要能够从combinedtextField中删除所选文本

-(IBAction)addtextField1: (id)sender
{
 combinedtextField.text = [NSMutableString stringWithFormat:@"%@ %@",
 combinedtextField.text,textField1.text];
}

-(IBAction)addtextField2: (id)sender
{
 combinedtextField.text = [NSMutableString stringWithFormat:@"%@ %@",
             combinedtextField.text,  textField2.text];
}
-(IBAction)addtextField3:(id)sender
{
combinedtextField.text = [NSMutableString stringWithFormat:@"%@ %@",
                   combinedtextField.text,textField3.text];
}
-(IBAction)removetextField1:(id)sender
{
  //////////????????????////////////////
}

-(IBAction)removetextField2: (id)sender
{
  //////////????????????////////////////
}
-(IBAction)removetextField3: (id)sender
{
//////////????????????////////////////
}   
如果我点击removetextField2按钮,它将从combinedtextField中删除相应的文本(坏),然后它将读取(大男孩) 我研究了nsarrays、NSDIctionary和其他方法,但没有找到答案。
需要某种可能标记输入并以这种方式删除它的方法。示例代码将非常棒,非常受欢迎。

您不能用非常简单的方式来完成它(没有任何添加,只有1个stroke magic函数)。但是,有一个简单的方法,我可能会选择

如果你不需要做很多次,并且/或者文本很小(不像一本500页的书),那么:

创建一个名为
mark
的布尔数组,
mark[i]
应将
i
的第个文本字段标记为“added”。然后,创建一个名为
reloadCombinedTextField
的函数,该函数根据
mark
数组再次创建它。(如果
标记[i]==true
,则添加文本字段的文本,否则不添加)
然后,只需在每个函数中标记或取消标记所需的文本字段,并在每次调用结束时调用reload函数

尽管有另一种方法,但在文本字段具有相同文本的情况下可能会出错。问题是,您只需在组合文本字段中搜索所选文本字段中的文本(例如,使用
[NSString rangeOfString]
方法),然后将其删除


如果你打算经常这样做,而且文本非常大,那么它就会变得更加复杂。但是我很确定,你不会在iOS上这么做。

你遗漏了一些关于你的应用程序的重要细节,所以我在猜测它应该如何工作

也许您应该做的是保留一个包含已添加到组合字符串中的所有片段的可变数组:

@implementation MyViewController {
    NSMutableArray *fragments_;
}

- (void)viewDidLoad {
    [super viewDidLoad];
    fragments_ = [[NSMutableArray alloc] init];
}
- (IBAction)addTextField1:(id)sender {
    [fragments_ addObject:textField1.text];
    [self updateCombinedTextField];
}

- (void)updateCombinedTextField {
    combinedTextField.text = [fragments componentsJoinedByString:@" "];
}
- (IBAction)removeTextField1:(id)sender {
    [fragments_ removeObject:textField1.text];
    [self updateCombinedTextField];
}
点击其中一个添加按钮时,将相应字段的文本附加到数组中,并重新计算组合字符串:

@implementation MyViewController {
    NSMutableArray *fragments_;
}

- (void)viewDidLoad {
    [super viewDidLoad];
    fragments_ = [[NSMutableArray alloc] init];
}
- (IBAction)addTextField1:(id)sender {
    [fragments_ addObject:textField1.text];
    [self updateCombinedTextField];
}

- (void)updateCombinedTextField {
    combinedTextField.text = [fragments componentsJoinedByString:@" "];
}
- (IBAction)removeTextField1:(id)sender {
    [fragments_ removeObject:textField1.text];
    [self updateCombinedTextField];
}
点击其中一个删除按钮时,尝试从片段数组中删除相应字段的文本,并重新计算组合字符串:

@implementation MyViewController {
    NSMutableArray *fragments_;
}

- (void)viewDidLoad {
    [super viewDidLoad];
    fragments_ = [[NSMutableArray alloc] init];
}
- (IBAction)addTextField1:(id)sender {
    [fragments_ addObject:textField1.text];
    [self updateCombinedTextField];
}

- (void)updateCombinedTextField {
    combinedTextField.text = [fragments componentsJoinedByString:@" "];
}
- (IBAction)removeTextField1:(id)sender {
    [fragments_ removeObject:textField1.text];
    [self updateCombinedTextField];
}

这将从片段数组中删除字段1的所有文本。如果您只想删除一个实例,则需要使用
indexOfObject:
(或其变体之一),然后使用
removeObjectAtIndex:

,从查看您发布的代码时,似乎用户将“fred”放在文本字段1中,然后将文本字段1更改为“bob”,组合文本字段将包含“fred bob”. 是这样吗?如果没有,请发布防止这种情况发生的代码。没有。当您向每个文本字段输入文本并点击按钮时,它会将其添加到combinedtextfield。即输入到textfield1(fred)输入到textfield2(bob),combinedtextfield显示fred bobOK,因此我在字段1中输入“fred”,然后点击Add 1。然后我将字段1改为“bob”,然后点击Add 1。我想现在合二为一就是“弗雷德·鲍勃”。然后我点击删除1。现在我想他说的是“弗雷德”。然后我再次点击删除1。应该怎么做?为每个字段单独删除和添加按钮