表格视图单元格未到达相同的数组

时间:2018-02-17 14:14:04

标签: ios swift uitableview

我正在尝试构建一个具有Items对象的app和一个名为ItemsController的控制器。同样在我的屏幕上,我想有一个表格视图和一个按钮。按钮的功能是单击它时需要检查ItemsController中的favoriteItems数组(如果在该数组中找到remove元素),如果在那里找不到它,则将其附加到数组。移除和附加好的操作但不幸的是所有单元格不能一起工作。他们创建自己的favoriteItems数组。

为了达到这个目的,我试着让ItemsController成为一个单身人士。我将类更改为结构,并在所有地方调用ItemsController.sharedInstance。它实际上解决了我的很多问题,我相信我学到的来源并没有错。但为什么我的tableview单元格不使用ItemsController的favoriteItems数组而是创建它们?

struct ItemsController {
    var favoriteItems = [Items]()
    static var sharedInstance = ItemsController()

    init(){
        itemsArray = [...items...]
    }
}

class TableViewCell: UITableViewCell {

@IBOutlet weak var favoriteButton: UIButton!

let buttonFirstColor : UIColor = UIColor.clear
let buttonSecondColor : UIColor = UIColor(red: 224/255.0, green: 74/255.0, blue: 94/255.0, alpha: 1.0)
var itemsController = ItemsController.sharedInstance
var itemDedicated = Items(name: "", pic: "", aciklama: "")

override func awakeFromNib() {
    super.awakeFromNib()
    // Initialization code
    favoriteButton.layer.cornerRadius = 0.5 * favoriteButton.bounds.size.width
    favoriteButton.backgroundColor = UIColor.clear
    favoriteButton.layer.borderColor = UIColor(red: 224/255.0, green: 74/255.0, blue: 94/255.0, alpha: 1.0).cgColor
    favoriteButton.layer.borderWidth = 4.0
    favoriteButton.clipsToBounds = true

    setFavoriteButton()
}

override func setSelected(_ selected: Bool, animated: Bool) {
    super.setSelected(selected, animated: animated)

    // Configure the view for the selected state
}

@IBAction func favoriteButtonClicked(_ sender: Any) {
    var favoriteFound = false

    for items in itemsController.favoriteItems{
        if(items.name == itemDedicated.name){
            favoriteFound = true            }
    }

    if(favoriteFound){
        itemsController.favoriteItems.remove(at: itemsController.favoriteItems.index(of: itemDedicated)!)
    } else {
        itemsController.favoriteItems.append(itemDedicated)
    }

    setFavoriteButton()
}

private func setFavoriteButton(){
    var favoriteFound = false

    for items in itemsController.favoriteItems{
        if(items.name == itemDedicated.name){
            favoriteFound = true            }
    }

    if(favoriteFound){
        favoriteButton.backgroundColor = buttonSecondColor
        favoriteButton.setTitleColor(buttonFirstColor, for: .normal)
    } else {
        favoriteButton.backgroundColor = buttonFirstColor
        favoriteButton.setTitleColor(buttonFirstColor, for: .normal)
    }
}

}

0 个答案:

没有答案