Добавление ячейки в табличное представление при нажатии кнопки в swift

#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