0

我是 xcode 和目标 c 的新手。这个问题我已经问了三遍了,仍然找不到好的方法或答案。我有几个 uitextfields 接受用户输入并按照 IBAction 使用的顺序将其添加到组合文本字段中。即用户在一个字段中输入大,在下一个字段中输入错误,在第三个字段中输入男孩,结果是组合文本字段中的大坏男孩。

-(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 按钮,它将从组合文本字段中删除相应的文本(坏),然后它会读取(大男孩)我查看了 nsarrays、nsdictionarys 和其他方法,但没有找到。需要一些可能标记输入并以这种方式删除它的方法。示例代码会很棒,非常感谢。

4

2 回答 2

0

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

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

@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:.

于 2012-10-16T21:34:01.637 回答
0

您不能以非常琐碎的方式做到这一点(无需添加任何内容,只需 1stroke 魔术功能)。但是,有一种简单的方法,我可能会选择。

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

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

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

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

于 2012-10-16T21:26:09.367 回答