外のセルのラベルを更新しようとしています
_override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell
_
を使用して
_let cell = tableView.dequeueReusableCellWithIdentifier("cell", forIndexPath: indexPath) as! Cell
_
別の関数で。しかし、エラーが発生し続けます。そのため、let cell = Cell()
を使用してセルを参照しようとしましたが、エラー_unexpectedly found nil
_が発生しました。最後に、試しました
_let cell = tableView.dequeueReusableCellWithIdentifier("cell") as! Cell
_
エラーは返されませんが、ラベル_cell.time.text
_は更新されません。
Swift 3.&Swift 4
let indexPath = IndexPath(row: 0, section: 0)
let cell = tableView.cellForRow(at: indexPath)
Swift 2.
let indexPath = NSIndexPath(forRow: 0, inSection: 0)
let cell = tableView.cellForRowAtIndexPath(indexPath)
NOTE:-上記の方法の助けを借りて、セルがnilである場合を除き、tableView
の可視セルのみを取得できます
UITableView
オーバーライドメソッドcellForRowAt indexPath
の外でセルを使用する場合は、最初に、行のindexPath
をフェッチしてから、indexPath
を使用する必要があります。その行のUITableView
のセルを取得できます。
セルを取得したら、UITableView
の外でそれらのプロパティとメソッドにアクセスできます。
これを試して:
このコードでは、カスタムセルを使用しています。
let indexPath = IndexPath.init(row: 0, section: 0)
let cell = tableView.cellForRow(at: indexPath) as! MembersCell
モデルのデータを更新する
indexPathを再読み込み
let indexPathToRefresh = IndexPath(row: 0, section: 0)
tableView.reloadRows(at: [indexPathToRefresh], with: .none)
これを使って:
tableView.cellForRow(at: IndexPath(row: row, section: section)) as! CustomCell
セルに次のようなプロパティがある場合
@IBOutlet label: UILabel!
あなたはこれを使うことができます:
tableView.cellForRow(at: IndexPath(row: row, section: section)) as! CustomCell).label.text = "Test123" // smth like this
それが役に立てば幸い
dequeueReusableCellWithIdentifier
メソッドの外でcellForRowAtIndexPath
を使用しないでください。
cellForRow(at:)
を使用する必要があります https://developer.Apple.com/reference/uikit/uitableview/1614983-cellforrow