#ios #swift #uitableview #view
#iOS #swift #uitableview uitableview #Вид
Вопрос:
у меня есть просмотры в моем app. mainMeasurements и historyMode. в основном измерении пользователь может делать снимки и измерять расстояние, скорость и время. Мне нужно, чтобы приложение сохраняло эти измеренные данные в TableView в режиме истории при нажатии кнопки сброса (например, в приложении для телефона). я уже подготовил данные и прокомментировал их. он должен добавлять ячейки в табличное представление с данными image и «lastTop …», а также показывать старые
class mainMeasurements: UIViewController, CLLocationManagerDelegate, UINavigationControllerDelegate, UIImagePickerControllerDelegate {
var speedArray: [String] = []
var arrayOfImages: [UIImage] = []
var distanceArray: [Int] = []
var lastTopDistance: String?
var lastTopSpeed: String?
var lastTopTime: String?
@IBOutlet weak var takePhoto: UIButton!
@IBOutlet weak var mountainImage: UIImageView!
@IBOutlet weak var speedLabel: UILabel!
@IBOutlet weak var distanceLabel: UILabel!
@IBOutlet weak var timerLabel: UILabel!
@IBOutlet weak var resetButtonLabel: UIButton!
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == "switchToHistory"{
// let historyModeVc = segue.destination as! historyMode
// historyModeVc.memoryPhoto = arrayOfImages.last
// historyModeVc.historySpeedLabelMM = lastTopSpeed
// historyModeVc.historyDistanceLabelMM = lastTopDistance
// historyModeVc.historyTimerLabelMM = lastTopTime
}
}
@IBAction func resetDidTouch(_ sender: UIButton) {
arrayOfImages.append(mountainImage.image!)
self.lastTopSpeed = self.maxSpeed
self.lastTopDistance = self.distanceLabel.text
self.lastTopTime = self.timerLabel.text
self.arrayOfImages.append(self.mountainImage.image!)
}
}
И
import UIKit
class historyMode: UIViewController {
var memoryPhoto: UIImage?
var historyTimerLabelMM: String?
var historySpeedLabelMM: String?
var historyDistanceLabelMM: String?
override func viewDidLoad() {
super.viewDidLoad()
// historyDistanceLabel.text = historyDistanceLabelMM
// historySpeedLabel.text = historySpeedLabelMM
// historyTimerLabel.text = historyTimerLabelMM
// historyImage.image = memoryPhoto
}
Ответ №1:
Если я не ошибаюсь, вы спрашиваете о том, как отобразить ваши данные в табличном виде?
Вы можете проанализировать свои данные следующим образом и передать их historyMode
:
struct YourData {
var arrayOfImages: [UIImage]
var lastTopDistance: String?
var lastTopSpeed: String?
var lastTopTime: String?
}
Создание пользовательской ячейки:
class CustomCell: UITableViewCell {
override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) {
super.init(style: style, reuseIdentifier: reuseIdentifier)
// configure your cell UI
}
required init?(coder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
func set(with data: YourData) {
// initialize your properties with the data you provide
}
}
Зарегистрируйте свою пользовательскую ячейку historyMode
и передайте свои данные в пользовательскую ячейку:
var yourDataArray: [YourData]!
override func viewDidLoad() {
super.viewDidLoad()
tableView.register(CustomCell.self, forCellReuseIdentifier: "CustomCell")
}
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "CustomCell", for: indexPath) as! CustomCell
let yourData = yourDataArray[indexPath.row]
cell.set(with: yourData)
return cell
}
Комментарии:
1. Как добавить ячейку в табличное представление при нажатии кнопки?
Ответ №2:
Добавьте новый элемент в свой источник данных и используйте NotificationCentre
для вызова tableView.reloadData()
historyMode