0

xcodeとObjectiveCに不慣れです。私はこの質問を3回行ったが、それでも良い方法や答えを見つけることができない。ユーザー入力を受け入れ、IBActionが使用される順序でcombinedtextFieldに追加するいくつかのuitextfieldがあります。つまり、ユーザー入力は1つのフィールドで大きく、次のフィールドで悪い、3番目のフィールドで悪い、結果は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];
}

ここで興味深いところです。combinedtextFieldから選択したテキストを削除できるようにする必要があります。

-(IBAction)removetextField1:(id)sender
{
  //////////????????????////////////////
}

-(IBAction)removetextField2: (id)sender
{
  //////////????????????////////////////
}
-(IBAction)removetextField3: (id)sender
{
//////////????????????////////////////
}   

removetextField2ボタンをタップすると、combinedtextFieldから対応するtext(bad)が削除され、nsarrays、nsdictionarys、およびその他のメソッドを調べたところ、どこにも表示されませんでした。入力にタグを付けて、その方法で削除する方法が必要です。サンプルコードは素晴らしく、非常にありがたいです。

4

2 に答える 2

0

あなたはあなたのアプリに関するいくつかの重要な詳細を省略しているので、私はそれがどのように機能するべきかについていくつかの推測をしています。

おそらくあなたがすべきことは、結合された文字列に追加されたすべてのフラグメントの可変配列を保持することです。

@implementation MyViewController {
    NSMutableArray *fragments_;
}

- (void)viewDidLoad {
    [super viewDidLoad];
    fragments_ = [[NSMutableArray alloc] init];
}

追加ボタンの1つをタップすると、対応するフィールドのテキストが配列に追加され、結合された文字列が再計算されます。

- (IBAction)addTextField1:(id)sender {
    [fragments_ addObject:textField1.text];
    [self updateCombinedTextField];
}

- (void)updateCombinedTextField {
    combinedTextField.text = [fragments componentsJoinedByString:@" "];
}

削除ボタンの1つをタップすると、対応するフィールドのテキストがフラグメント配列から削除され、結合された文字列が再計算されます。

- (IBAction)removeTextField1:(id)sender {
    [fragments_ removeObject:textField1.text];
    [self updateCombinedTextField];
}

これにより、フィールド1のテキストのすべての出現箇所がフラグメント配列から削除されます。1つのインスタンスを削除するだけの場合は、indexOfObject:(またはそのバリアントの1つ)の後に。を使用する必要がありますremoveObjectAtIndex:

于 2012-10-16T21:34:01.637 に答える
0

非常に簡単な方法でそれを行うことはできません(追加するものがなければ、1ストロークの魔法の関数だけです)。しかし、私が行った可能性のある簡単な方法があります。

何度も行う必要がない場合、および/またはテキストが非常に小さい場合(500ページの本のように)、次のようになります。

、という名前のブール配列を作成し、 '番目のテキストフィールドを'追加'としてマークする必要がありmarkます。次に、配列に応じて、という名前の関数を作成します。(の場合、テキストフィールドのテキストを追加します。そうでない場合は追加しません) 次に、すべての関数で必要なテキストフィールドをマークまたはマーク解除し、すべての呼び出しの最後にリロード関数を呼び出します。mark[i]ireloadCombinedTextFieldmarkmark[i] == true

また、別の方法もありますが、テキストフィールドに同じテキストがある場合は間違っている可能性があります。重要なのは、結合されたテキストフィールドで、選択したテキストフィールドからテキストを検索し(たとえば、[NSString rangeOfString]メソッドを使用して)、それを削除することです。

あなたがそれを頻繁に行うつもりであり、テキストが本当に大きい場合、それははるかに複雑になります。しかし、私はあなたがiOSでこれをしないだろうと確信しています。

于 2012-10-16T21:26:09.367 に答える