2017-12-04 14 views
0

英語でアルファベット順に名前が付けられた単純な表のセルがあります。 私は他の言語ですべてローカライズすることができ、すべて正常に動作します。 質問は次のとおりです。ローカライズされた名前を他の言語でアルファベット順に配置する方法またはコマンドがありますか?すべてのローカライズ可能な文字列のアルファベット順

import UIKit 

var animals = [“A1”, “A2”, “A3”, “A4”, “A5”]; 

class TableViewController: UITableViewController { 

    override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 
     return animals.count 
    } 

    override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { 
     let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath) as! TableViewCellController; 
     cell.textLabel?.font = UIFont(name: "Futura-Bold", size: 18); 
     cell.textLabel?.textColor = UIColor.black; 
     cell.textLabel?.text = NSLocalizedString(animals[indexPath.row], comment: ""); 
     cell.smallBird.image = UIImage(named: animals[indexPath.row] + ".png"); 
     return cell 
    } 
} 

ローカライズ文字列

/* Animals (EN) */ 

“A1" = “Cat”; 
“A2" = “Dog”; 
“A3" = “Owl”; 
“A4" = “Leon”; 
“A5" = “Tiger”; 
+2

FYI - Swiftの行の最後にセミコロンは必要ありません。 – rmaddy

+0

@rmaddyしかし、OPは文字列をローカライズするために.stringsファイルを使用しています。その場合、セミコロンが必要です。 – Xcoder

+0

@Xcoder私は、文字列ファイルではなくスウィフトコードについて説明しています。 – rmaddy

答えて

1

あなたは、現時点でのキーではなく値によってそれらを発注しています。

イメージのキーとラベルの値が必要であり、値で行をソートする必要があるため、キーの配列以上のものが必要です。

以下は、ローカライズされた名前でソートされたキーとローカライズされた名前のタプルの配列を作成します。

let animals = ["A1", "A2", "A3", "A4", "A5"].map { ($0, NSLocalizedString($0, comment: "")) }.sorted { $0.1 < $1.1 } 

その後cellForRowAtを更新:

cell.textLabel?.text = animals[indexPath.row].1 
cell.smallBird.image = UIImage(named: animals[indexPath.row].0) 

あなたはUIImage(named:)を使用するときに ".PNG" を追加する必要はありません。

関連する問題