Swift: изменение данных ячейки TableView с помощью действия кнопки - PullRequest
0 голосов
/ 02 января 2019

Я создаю приложение Bus Ticket. и не я устанавливаю свой экран точки падения и посадки. Таким образом, у меня есть список данных, один для точки посадки, а другой - точки сброса в типе массива. Так что я хочу установить в соответствии со следующим изображением. Когда я выбираю кнопку посадки, я хочу показать список точек посадки и аналогичных для кнопки сброса.

enter image description here

Так что я просто пытаюсь, следуя коду, но он не работает для меня.

 var arrBoardPoints = [SBDropPickPoint]()  
 var arrDropPoints = [SBDropPickPoint]()


func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let cell = tableView.dequeueReusableCell(withIdentifier: "DroppingCell") as! DroppingCell
        if btnBoarding.isSelected == true {
            cell.lblDrop.text = arrBoardPoints[indexPath.row].title
            cell.lblAddress.text = arrBoardPoints[indexPath.row].address
            cell.lblTime.text = arrBoardPoints[indexPath.row].time
        } else btnDropping.isSelected == true {
            cell.lblDrop.text = arrDropPoints[indexPath.row].title
            cell.lblAddress.text = arrDropPoints[indexPath.row].address
            cell.lblTime.text = arrDropPoints[indexPath.row].time
        }
        return cell
    }

И я перезагружаю свои данные tableView при действии кнопки сбрасывания и посадки на борт.

Ответы [ 2 ]

0 голосов
/ 02 января 2019

Выполните этот шаг: -

1 - Создайте UISegmentedController с индексом двух сегментов, одним из которых является Boarding, а вторым Dropping

2 - Создайте third array of your model в вашем контроллере

var arrPoints = [SBDropPickPoint]()

3 - Добавить целевой метод сегментированного контроллера в метод viewDidLoad и назначить первый массив arrPoints и указать, какой сегмент выбран первым.

    arrPoints = arrBoardPoints
    segmentedController.selectedSegmentIndex = 0

    segmentedController.addTarget(self, action: #selector(segmentedControllerValueChanged(sender:)), for: .valueChanged)

4 - Добавьте код в целевой метод сегментированного контроллера, какой список массивов вы хотите отобразить, а затем перезагрузите просмотр таблицы.

@objc func segmentedControllerValueChanged(sender: UISegmentedControl) {

        switch sender.selectedSegmentIndex {
        case 0:
            arrPoints = arrBoardPoints
        case 1:
            arrPoints = arrDropPoints
        default:
            print("Invalid")
        }

        tableView.reloadData()
    }

5 - В вашем источнике данных tableview и методе delgate используйте массив модели arrPoints для отображения списка.

extension ControllerName: UITableViewDataSource, UITableViewDelegate {

    func numberOfSections(in tableView: UITableView) -> Int {
        return 1
    }

    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return arrPoints.count
    }

    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let cell = tableView.dequeueReusableCell(withIdentifier: "DroppingCell") as! DroppingCell        
        cell.lblDrop.text = arrPoints[indexPath.row].title
        cell.lblAddress.text = arrPoints[indexPath.row].address
        cell.lblTime.text = arrPoints[indexPath.row].time

    return cell

    }


}
0 голосов
/ 02 января 2019

Когда вы нажимаете на btnBoarding, вам нужно сделать isSelected = false для удаления кнопки. И наоборот, если вы нажали на btnDropping, тогда вам нужно также выполнить btnBoarding = false.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...