Пользовательское изображение и переключатель не отображаются в контроллере представления коллекции в нужном месте - PullRequest
0 голосов
/ 18 сентября 2018

Мое требование: мне нужно заполнить 10 ячеек в контроллере представления коллекции, и мне нужно отобразить состояние батареи 6-й ячейки и в 7-й необходимо переключиться.Оставшаяся ячейка не требуется для отображения состояния батареи и переключения.Я добавляю эти два (состояние батареи и переключатель) программно.

 override func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
        let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "cell", for: indexPath)

        if indexPath.row == 6 {
            let percentage: CGFloat = 0.4

            let imageview:UIImageView=UIImageView(frame: CGRect(x: 10, y: 50, width: 30, height: 18))
            let img : UIImage = UIImage(named:"batteryIcon")!
            imageview.image = img

            let batteryView  = UIView.init(frame: CGRect(x: 10, y: 50, width: 30, height: 18))
            cell.addSubview(batteryView)
            let colorRect = CGRect(x: batteryView.bounds.origin.x, y: batteryView.bounds.origin.y, width: batteryView.bounds.width * percentage, height: batteryView.bounds.height)
            let coloredView = UIView(frame: colorRect)
            coloredView.backgroundColor = UIColor.green
            batteryView.addSubview(coloredView)
            cell.contentView.addSubview(imageview)
        } else if indexPath.row == 7 {
            let switchDemo = UISwitch(frame: CGRect(x: 10, y: 40, width: 37, height: 18))
            switchDemo.isOn = true
            switchDemo.setOn(true, animated: false)
            switchDemo.transform = CGAffineTransform(scaleX: 0.70, y: 0.70)
            switchDemo.addTarget(self, action: #selector(switchValueDidChange), for: .valueChanged)
            cell.contentView.addSubview(switchDemo)
        }
        return cell
    }

Здесь все работает нормально.Но проблема в том, что когда я вызываю «collectionView.reloadData ()» вместо отображения состояния батареи и переключения 6-й и 7-й ячеек, эти две появляются и в других ячейках.

Я не получаю, какую ошибку я сделал,Для лучшего понимания моего требования я делюсь изображением.enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...