Swift:TableView Cell数据随按钮动作而变化

时间:2019-01-02 10:45:02

标签: arrays swift uitableview

我创建了公交车票应用程序。而不是我正在设置“落机点”屏幕。所以我有一个数据列表,一个是用于登机点,另一个是在数组类型中删除点。所以我想按照下图进行设置。当我选择“登机按钮”时,我想显示“登机点”列表以及“放下按钮”的类似列表。

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 :(得分:1)

遵循此步骤:-

1-创建UISegmentedController,其具有两个分段索引,一个是登机,另一个是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-在分段控制器的目标方法中添加要显示的数组列表的代码,然后重新加载tableview。

@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

    }


}

答案 1 :(得分:0)

当您单击btnBoarding时,需要执行isSelected = false来放置按钮。反之亦然,如果您点击btnDropping,那么您也需要做btnBoarding = false。