1

私のアプリには、基本スタイルのセルの動的リストを含むテーブルビューがあります。各セルの textLabel は xml から取得され、スペースの代わりにアンダースコアが含まれています。ラベル テキストを使用して、didSelectRowAtIndexPath でタップされているセルを特定し、それを他の xml ファイル内の同じ文字列の他の出現箇所と照合します。これを機能させるには、ラベルにアンダースコアを含める必要がありますが、代わりにスペースを使用すると見栄えが良くなります。

だから私の質問は、アンダースコアをスペースとして表示するようにlabelTextを設定できますが、アンダースコアが使用されているxmlと一致するように、基になる文字列にアンダースコアを保持できますか?

4

5 に答える 5

3

好きなように labelText を表示させることができます。tableView:cellForRowAtIndexPath:アンダースコアをスペースに置き換えた文字列でセルを構成するだけです(簡単に行うにはを参照しstringByReplacingOccurrencesOfString:withString:てください)。

于 2012-09-04T22:07:49.257 に答える
1

XML から取得した文字列の配列を取得し、ラベルを表示セルに配置するときにアンダースコアをスペースにフィルター処理することができます。それはおそらく私がそれにアプローチする方法です。さらに言えば、文字列を双方向にフィルタリングすることもできますが、私の意見では、XML ファイルからバージョンを保存する方がおそらく簡単です。

于 2012-09-04T22:07:58.427 に答える
1

コメントで述べたように、現在の設計が要件に最適であるとは思いませんが、セルのラベルにデータを本質的に格納する以外に方法がまったくない場合は、次のようにします。

- (UITableViewCell *)tableView:(UITableView *)tv cellForRowAtIndexPath:(NSIndexPath *)ip
{
    /* instantiate cell here */
    NSString *cellText = /* however you need to get the cell text */;
    cellText = [cellText stringByReplacingOccurrencesOfString:@"_" withString:@" "];
    cell.textLabel.text = cellText;
    /* whatever other cell setup you need */
}

次に、選択コールバックで:

- (void)tableView:(UITableView *)tv didSelectRowAtIndexPath:(NSIndexPath *)ip
{
    UITableViewCell *cell = [tv cellForRowAtIndexPath:ip];
    NSString *cellText = cell.textLabel.text;
    cellText = [cellText stringByReplacingOccurrencesOfString:@" " withString:@"_"];
    /* go do whatever with cellText */
}

お役に立てれば。

于 2012-09-04T22:21:46.423 に答える
0

_ をスペースに置き換える新しい文字列を作成できます。これにより、元の文字列が変更されずに保持されます (おそらく不変 (つまり、NSMutableString ではなく NSString) であるため、通常は問題になりません)。

self.labelText.text = [incomingString stringByReplacingOccurrencesOfString:@"_" withString:@" "];
于 2012-09-04T22:07:26.590 に答える
0

「_」の発生を「 」に置き換えるだけの NSValueTransformer のサブクラスを作成できます。これは値に影響しませんが、値変換オプションを使用して、ボタンの stringValue が値にバインドされている場合は外観を変更します。

これは、ボタンの stringValue がバインディングを介して設定されていることを前提としています。他の回答は、テキストが手動で設定されていることを前提としています。

于 2012-09-04T22:08:21.767 に答える