DOTS到另一个TABLEVIEW的单元格。 (从TableView中选择一个项目,在另一个TableView中显示它)

我构建一个内置的应用程序,其中包含2个不同的标签。第一个标签是““基本上有一个包含由API配置的单元格。(API现在获取我的国家名称),这些单元格也有一个”星形“按钮,目前也具有打印特定单元格的数据。

Second标签是“保存”Tab(SavedViewController.),我想展示的地方“主演”Countries使用TableView。

您可以看到下面的图像以获得应用程序的想法。

App模拟图像

Star按钮在我的函数中有一个功能CountrestableViewCell..我正在使用SaveButtondelegate.在命令让SavedViewController.知道关于一个项目的知识将被保存。代码CountrestableViewCell.飞星按钮如下。

@objc func buttonTapped() {
    //If Button is selected fill the image. Else unfill it.
    
    if !isSaveButtonSelected {
        saveButton.setImage(UIImage(systemName: "star.fill"), for: .normal)
        isSaveButtonSelected = true
        
        saveButtonDelegate?.saveButtonClicked(with: countryData) //Checking if save button is clicked
    }
}

CountryData.我从API获得的数据,这是我想要传递的数据SavedViewController..

struct CountryData: Codable {
let name : String
}

在那里SavedViewController.,我正在使用使用的数据SaveButtonProtocol.总结如下:

extension SavedViewController: SaveButtonProtocol {

func saveButtonClicked(with data: CountryData) {
    countryDataArray.append(data)
    print("saveButtonClicked")
    print("countryData in savevc is \(countryDataArray)")
    DispatchQueue.main.async {
        self.countriesTableView.reloadData()
    }
}
}

无论何时单击第一个选项卡上的星形按钮,此功能会呼叫SavedViewController..所以每当我点击按钮时,那些Print.上面的工作正常。

The problem is, whenever the star button is clicked, it should append the data of the current clicked cell to CountryDataArray.SavedViewController..但是数组不是填充。

Let表示我按下了第一个单元格的星形按钮,我的打印(“Savevc中的CountryData(CountryDataArray)”)Statement打印:[“梵蒂冈城”]然后我按下第二个单元格的星形按钮,只打印它[“埃塞俄比亚”] while it should print [“梵蒂冈城”,“埃塞俄比亚”]

Why this issue is happening? My best guess is I’m delegating SavedViewController. from the cell class so it behaves differently for every other cell. If that is the problem what should I do to solve it?

谢谢。

检查是否在某处重置CountryDataArray。检查委托和SavedViewController始终相同。您还应该将数据存储在共享(静态数组)对象中,因此您只有一个源,并在您的国家/地区结构中添加保存的指示灯,以便您不依赖于一个视图控制器中显示的内容。PTIT XAV
可供溶解。静态阵列真的很好。很欣赏它!感谢您了解了新的整个概念。如果发布它,我可以接受你的答案。谢谢BALBI
重要是要定义您的模型,并从您访问它的位置。如果多个地方静态属性是有用的,因为只有一个由所有视图控制器共享一个副本。您可以在核心数据模板中看到此功能:仅共享一个数据库实例。PTIT XAV
可靠的概念和真正完成的解释。谢谢拓宽我的愿景!肯定会更频繁地使用静态。BALBI

回答 1

  1. 赞同 0

    您应该将数据存储在共享(静态阵列)对象中,因此您只有一个源头并在您的国家/地区结构中添加保存的指示器,因此您不依赖于一个视图控制器中显示的内容。

    PTIT XAV