Swift:TableView 单元格数据随按钮操作而变化

Posted

技术标签:

【中文标题】Swift:TableView 单元格数据随按钮操作而变化【英文标题】:Swift : TableView Cell data change with the Button Actions 【发布时间】:2019-01-02 10:45:02 【问题描述】:

我创建了 Bus Ticket 应用程序。而不是我正在设置我的降落和登机点屏幕。所以我有一个数据列表,一个是登机点,另一个是数组类型中的落点。所以我想按照下图进行设置。当我选择登机按钮时,我想显示登机点列表和类似的下降按钮。

所以我只是尝试遵循代码,但这对我不起作用。

 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
    

我在 Dropping 和 Boarding Button Action 上重新加载了我的 tableView 数据。

【问题讨论】:

为登机和降落创建分段控制器,每当用户点击特定字段时显示单元格和降落列表,登机列表 UI 是否相同? 是的,两者都是一样的。 btnBoarding.isSelectedbtnDropping.isSelected,其中任何一个都是真的吗? SBDropPickPoint 是模型还是库? 这是模型@AbhishekJadhav 【参考方案1】:

按照这个步骤:-

1 - 创建具有 两个段索引的 UISegmentedController 一个是登机,第二个是下降

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

    



【讨论】:

谢谢。工作魅力【参考方案2】:

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

【讨论】:

以上是关于Swift:TableView 单元格数据随按钮操作而变化的主要内容,如果未能解决你的问题,请参考以下文章

Swift 将按钮操作添加到 TableView 单元格

swift 3 在tableView 中按下了哪个单元格按钮

swift-Tableview 单元格 UIButton 背景颜色

向下滚动时不会出现 Swift Expandable tableView 单元格按钮

如何在swift 3中删除tableview中特定单元格的按钮

当我在按钮操作上从 TableView 中删除单元格时,应用程序崩溃了 - iOS Swift