选择UICollectionViewCell时更新UITableViewCell

时间:2017-12-11 09:28:13

标签: ios uitableview

我正在创建一个项目,我有很多选项供用户在不同的计划中进行选择。

所以我创建了一个UITableViewCell,将UICollectionView放在一个UICollectionViewCell作为一个计划。

现在,用户只能选择一个计划。

假设用户选择了第二个计划,我需要更新UITableViewCell中的按钮的价格。

我知道我们可以重新加载tableCell并进行更新。但除了重新加载UITableViewCell

之外还有其他办法吗?

UI for that cell

让我知道除了重新加载整个tableviewcell之外的最佳方法

3 个答案:

答案 0 :(得分:0)

在Uicollectionview的didselect方法中,获取价格显示的tableviewcell并更新按钮。

 CollectionView didSelectItem method  
 {  

NSIndexPath *indexpathoftableviewcell = [NSIndexPath indexpathForRow:1 inSection:0];   
UITableViewCell *priceCell = [tableView cellForRowAtIndexPath: indexpathoftableviewcell];       
UIButton *priceBtn = (UIButton*)[priceCell viewWithTag:tagOfBtn];
[priceBtn setTitle:@"43432" forControlState:UIControlStateNormal];

} 

答案 1 :(得分:0)

假设您的UITableViewCell在其中加载UICollectionView,因此UICollectionView的DataSource和Delegate的明显选择应该是您的UICollectionViewCell。

因此,在您的TableView单元格中,您只需访问需要使用价格更新的标签,如下所示

extension MyTableViewCell : UICollectionViewDataSource {
    func numberOfSections(in collectionView: UICollectionView) -> Int {
        return 1
    }

    func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
        return 100
    }

    func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
        let someCell : MyCollectionViewCell = collectionView.dequeueReusableCell(withReuseIdentifier: "your_identifier", for: indexPath) as! MyCollectionViewCell
        return someCell
    }
}

extension MyTableViewCell : UICollectionViewDelegate {
    func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
        let cell = collectionView.cellForItem(at: indexPath) as! MyCollectionViewCell
        self.priceLabel.text = "\(cell.value)"
    }
}

这里我假设您的CollectionViewCell是一个自定义单元格,并且有一个名为value的属性,用于存储计划的价格

答案 2 :(得分:0)

容纳计划(UICollectionView)& UITableViewCell中的价格(UILabel或UIButton),而不是将其作为单独的单元格

这就是背后的原因。

两者 价格计划紧密相连。这意味着,当您更改计划时,相应的价格应该会出现,此要求可能会在未来增加,例如添加更多视图。如果您将整个部件容纳在一个UITableViewCell中,它将变得非常容易。 通过这种方式,您可以管理未来的设计证明。

关于这个问题,价格就像CustomTableViewCell中的一个IBOutlet 。只需更新

中的价格即可
func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {}