Я новичок в Swift / Xcode и столкнулся с проблемой при обновлении данных ячейки TableView. Кажется, я не могу найти / реализовать ответ на эту простую вещь из каких-либо подобных вопросов StackOverflow.
У меня есть приложение, которое начинает делать вызов API каждые 1 секунду по таймеру после нажатия кнопки. но проблема в том, что когда все данные табличного представления загружаются из массива с viewDidLoad()
, очевидно, что нет никаких данных для отображения в метке, поскольку еще не было сделано никакого вызова.
Как только я нажимаю кнопку, данные начинают течь, но на этикетке ничего не появляется. Я считаю, что это потому, что метка должна обновляться при каждом вызове, чтобы отобразить новые данные.
Данные также являются NSAttributedString из HTML. Не уверен, что это уместно, хотя, как кажется, он отлично работает в тестовой ячейке за пределами табличного представления.
По сути, я хочу как-то вызвать
cell.cellLabelTwo.attributedText = tableData[indexPath.row].secondRowLabel
из кода, показанного нижекаждый раз, когда делается новый вызов API, обновите cellLabelTwo новыми данными% усиления.
struct MyData {
var imageRow: UIImage
var firstRowLabel: String
var secondRowLabel: NSAttributedString
}
var tableData: [MyData] = []
override func viewDidLoad() {
super.viewDidLoad()
tableData = [
MyData(imageRow: UIImage(named: "ada.png")!, firstRowLabel: "ADA/USDT", secondRowLabel: adaPercentGainString.htmlToAttributedString!)
]
}
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return tableData.count
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "protoCellOne") as! TableViewCell
cell.cellImageOne.image = tableData[indexPath.row].imageRow
cell.cellLabelOne.text = tableData[indexPath.row].firstRowLabel
cell.cellLabelTwo.attributedText = tableData[indexPath.row].secondRowLabel
cell.cellLabelTwo.font = UIFont(name: "Helvetica Neue", size: 19)
cell.cellLabelTwo.textAlignment = .right
return cell
}
Редактировать: я добавил @IBOutlet var tableView: UITableView!
и подключил его к View Controller, я также назначил просмотр таблицы дляисточник данных и делегат View Controller. Для многих людей добавление выхода IB казалось решением этой проблемы, но на этикетке ячейки ничего не отображалось ...