2016-06-28 9 views
1

UITableViewControllerには、3つのラベルと1つのボタンを持つカスタムプロトタイプセルがあります。中間ラベル(descriptionLabelと呼ばれます)は、行折り返しオプションとして折り返しと属性インスペクタで0行が設定された複数行ラベルです。ワードラップ改行はUILabelでは特定のテキスト文字列に対してのみ機能しません

Cell with Word Wrap working

問題がdescriptionLabelのテキストがから来ているということです。私はリテラルStringを割り当てるdescriptionLabel.textプロパティを設定した場合、次の図に示すように

は、ワードラップオプションは、正常に動作しますオブジェクト。このオブジェクトはWebサービスからダウンロードされ、ローカルに格納され、セルの他のすべてのラベルを埋めるためにも使用されます。

IはdescriptionLabelのテキスト(cell.descriptionLabel.text = monthlyPaymentType.detail)へのオブジェクトのプロパティ文字列を割り当てると、しかし、ワードラップが動作していない、以下の図に示すようにこの場合

Cell with Word Wrap NOT working

"cobrado"は1つの単語ですが、ワードラップの代わりに文字ラップされています。

私はprint(monthlyPaymentType.detail)の結果をコピーする場合ので、それは奇妙だ、文字列リテラルとして貼り付けるとcell.descriptionLabel.textに割り当て、ワードラップオプションもはない作業を行います。

しかし、私は手動でprint(monthlyPaymentType.detail)のと全く同じ内容でリテラル文字列を入力してcell.descriptionLabel.textに割り当てた場合、ワードラップオプション作業を行います。

ラベルの設定時に何か問題がありますか?私のオブジェクトに格納されたStringに問題はありますか?

答えて

1

問題は、サーバーから来て、オブジェクトに格納されている文字列の空白がUnicode Non-Breaking Spaces(U + 00A0)であることです。これらの文字列がUILabeltextのプロパティに割り当てられている場合、非分割スペースは単語区切り文字と見なされません。

この問題を解決するために、StringのメソッドstringByReplacingOccurrencesOfString("\u{00A0}", withString: "\u{0020}")を使用して、U + 00A0文字の出現を共通のUnicode空白(U + 0020)に置き換えます。

関連する問題