詳細(字幕)テキストは表示されません。ただし、println()呼び出しが追加されると、予想されるデータとともにOptional( "data")がコンソールに出力されるため、データは使用可能です。ストーリーボードでは、UITableViewControllerが適切なクラスに設定され、Table View Cell Styleが「Subtitle」に設定され、再利用識別子が「cell」に設定されます。表示する字幕情報を取得するにはどうすればよいですか?
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
var cell = tableView.dequeueReusableCellWithIdentifier("cell", forIndexPath: indexPath) as UITableViewCell
dispatch_async(dispatch_get_main_queue(), { () -> Void in
cell.textLabel.text = self.myArray[indexPath.row]["title"] as? String
cell.detailTextLabel?.text = self.myArray[indexPath.row]["subtitle"] as? String
println(self.myArray[indexPath.row]["subtitle"] as? String)
// The expected data appear in the console, but not in the iOS simulator's table view cell.
})
return cell
}
ここで同じ問題(私が読んだことから、おそらくiOS 8のバグ?)、これは私たちがそれを回避した方法です:
ストーリーボードからプロトタイプセルを削除する
この行を削除します。
var cell = tableView.dequeueReusableCellWithIdentifier("cell", forIndexPath: indexPath) as UITableViewCell
let cellIdentifier = "Cell" var cell = tableView.dequeueReusableCellWithIdentifier(cellIdentifier)as? UITableViewCell if cell == nil { cell = UITableViewCell(style:UITableViewCellStyle.Value2、reuseIdentifier:cellIdentifier) }
Swift 3.1の更新
let cellIdentifier = "Cell"
var cell = tableView.dequeueReusableCell(withIdentifier: cellIdentifier)
if cell == nil {
cell = UITableViewCell(style: UITableViewCellStyle.value2, reuseIdentifier: cellIdentifier)
}
Swift 4.2-簡易版の更新
let cell = UITableViewCell(style: UITableViewCell.CellStyle.value2, reuseIdentifier: "cellId")
ストーリーボードからプロトタイプセルを引き続き使用する場合は、UITableViewcellスタイルをSubtitleとして選択します。それが動作します。
インターフェイスビルダーのセルなしでプログラムで行う場合、このコードはSwift 2.0+
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
yourTableView.delegate = self
yourTableView.dataSource = self
yourTableView.registerClass(UITableViewCell.self, forCellReuseIdentifier: "subtitleCell")
}
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return yourTableViewArray.count
}
func tableView(tableView: UITableView!, cellForRowAtIndexPath indexPath: NSIndexPath!) -> UITableViewCell! {
let cell: UITableViewCell = yourTableView.dequeueReusableCellWithIdentifier("subtitleCell", forIndexPath: indexPath) as UITableViewCell
cell.textLabel?.text = "the text you want on main title"
cell.detailTextLabel?.text = "the text you want on subtitle"
return cell
}
テキストをnil以外の値に設定しようとしたときにテキストをどこかにnilに設定している場合、テキストを含む実際のビューは失われます。これはiOS8で導入されました。代わりに、空のスペース@" "
文字に設定してみてください。
これを参照してください: ITableViewCellの字幕は更新されません
価値のあることについて:詳細が表示されないという問題がありました。それは、tableViewセルを登録したためです。これは、セルのプロトタイプがストーリーボードで直接定義されたため、登録すべきではありませんでした。