TableView не запоминает элементы управления UISegment при прокрутке внизIOS

Программируем под IOS
Ответить
Гость
 TableView не запоминает элементы управления UISegment при прокрутке вниз

Сообщение Гость »


TableViewController
import UIKit import FirebaseDatabase class OldGuestBooking: UIViewController { lazy var ref = Database.database().reference().child("Hotel").child("Royal Pearl") var checkInDate: Date? var checkOutDate: Date? var selectedRooms: [String] = [] var guestUUID: String = "" let nameLabel = UILabel() let idLabel = UILabel() let phoneLabel = UILabel() let checkInLabel = UILabel() let checkOutLabel = UILabel() let confirmButton = UIButton() let scrollView = UIScrollView() let contentView = UIView() let tableView = UITableView() var rooms: [Room] = [] var roomRates: [String: RoomTypeRates] = [:] let nextButton: UIButton = { let button = UIButton(type: .system) button.setTitle("Next", for: .normal) button.backgroundColor = .systemBlue button.setTitleColor(.white, for: .normal) button.layer.cornerRadius = 8 button.addTarget(self, action: #selector(nextButtonTapped(_:)), for: .touchUpInside) return button }() var total: Double? var subTotal: Double? var roomRatesValues: [Double] = [] let totalLabel: UILabel = { let label = UILabel() label.text = "Total:" label.font = UIFont.systemFont(ofSize: 20, weight: .bold) label.textAlignment = .center return label }() let subTotalLabel: UILabel = { let label = UILabel() label.text = "Subtotal:" label.font = UIFont.systemFont(ofSize: 15, weight: .regular) label.textAlignment = .center return label }() override func viewDidLoad() { super.viewDidLoad() tableView.register(RoomRateCell.self, forCellReuseIdentifier: "CustomTableViewCell") tableView.dataSource = self tableView.delegate = self setUpUI() fetchGuestInformation() fetchRoomTypeRates() fetchSelectedRoomsDetails() } @objc private func nextButtonTapped(_ sender: UIButton) { } func setUpUI() { view.backgroundColor = .white title = "Confirm Booking" navigationItem.leftBarButtonItem = UIBarButtonItem(title: "Back", style: .plain, target: self, action: #selector(backTapped)) navigationItem.leftBarButtonItem?.tintColor = .systemBlue // Setup labels let labels = [nameLabel, idLabel, phoneLabel] var previousLabel: UILabel? for label in labels { view.addSubview(label) label.translatesAutoresizingMaskIntoConstraints = false if let previous = previousLabel { label.topAnchor.constraint(equalTo: previous.bottomAnchor, constant: 10).isActive = true } else { label.topAnchor.constraint(equalTo: view.safeAreaLayoutGuide.topAnchor, constant: 10).isActive = true } label.leadingAnchor.constraint(equalTo: view.leadingAnchor, constant: 20).isActive = true label.trailingAnchor.constraint(equalTo: view.trailingAnchor, constant: -20).isActive = true previousLabel = label } // Setup the tableView view.addSubview(tableView) tableView.translatesAutoresizingMaskIntoConstraints = false NSLayoutConstraint.activate([ tableView.topAnchor.constraint(equalTo: (previousLabel?.bottomAnchor ?? view.safeAreaLayoutGuide.topAnchor), constant: 8), tableView.leadingAnchor.constraint(equalTo: view.leadingAnchor, constant: 0), tableView.trailingAnchor.constraint(equalTo: view.trailingAnchor, constant: 0), ]) // Setup the Subtotal and Total labels view.addSubview(subTotalLabel) subTotalLabel.translatesAutoresizingMaskIntoConstraints = false view.addSubview(totalLabel) totalLabel.translatesAutoresizingMaskIntoConstraints = false // Setup the Next Button view.addSubview(nextButton) nextButton.translatesAutoresizingMaskIntoConstraints = false NSLayoutConstraint.activate([ // Position the Subtotal label subTotalLabel.leadingAnchor.constraint(equalTo: view.leadingAnchor, constant: 20), //subTotalLabel.trailingAnchor.constraint(equalTo: view.trailingAnchor, constant: -20), subTotalLabel.bottomAnchor.constraint(equalTo: totalLabel.topAnchor, constant: -10), // 10 points above the total label // Position the Total label totalLabel.leadingAnchor.constraint(equalTo: view.leadingAnchor, constant: 20), //totalLabel.trailingAnchor.constraint(equalTo: view.trailingAnchor, constant: -20), totalLabel.bottomAnchor.constraint(equalTo: nextButton.topAnchor, constant: -20), // 20 points above the next button // Position the Next button nextButton.leadingAnchor.constraint(equalTo: view.leadingAnchor, constant: 20), nextButton.trailingAnchor.constraint(equalTo: view.trailingAnchor, constant: -20), nextButton.bottomAnchor.constraint(equalTo: view.safeAreaLayoutGuide.bottomAnchor, constant: -10), nextButton.heightAnchor.constraint(equalToConstant: 50), ]) // Adjust tableView's bottom constraint to make space for the labels and button tableView.bottomAnchor.constraint(equalTo: subTotalLabel.topAnchor, constant: -10).isActive = true // Setup the top and bottom borders let topBorder = UIView() let bottomBorder = UIView() [topBorder, bottomBorder].forEach { border in border.backgroundColor = .lightGray border.translatesAutoresizingMaskIntoConstraints = false view.addSubview(border) } NSLayoutConstraint.activate([ topBorder.topAnchor.constraint(equalTo: tableView.topAnchor), topBorder.leadingAnchor.constraint(equalTo: view.leadingAnchor), topBorder.trailingAnchor.constraint(equalTo: view.trailingAnchor), topBorder.heightAnchor.constraint(equalToConstant: 1), bottomBorder.bottomAnchor.constraint(equalTo: tableView.bottomAnchor), bottomBorder.leadingAnchor.constraint(equalTo: view.leadingAnchor), bottomBorder.trailingAnchor.constraint(equalTo: view.trailingAnchor), bottomBorder.heightAnchor.constraint(equalToConstant: 1) ]) } @objc func backTapped() { self.navigationController?.popViewController(animated: true) } var textFieldValues: [Double] = [] // Existing properties and methods... func updateTextFieldValues() { textFieldValues.removeAll() for i in 0.. indexPath.row { roomRatesValues[indexPath.row] = value } // Recalculate and update totals based on the updated rates array updateTotals() } // Other existing delegate methods... func textFieldValueDidChange(value: Double, at indexPath: IndexPath) { // Ensure the array has enough elements if textFieldValues.count

Источник: https://stackoverflow.com/questions/781 ... croll-down
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «IOS»