Как создать действие, которое изменяет свойства определенной ячейки uicollectionview? - PullRequest
0 голосов
/ 20 июня 2019

У меня есть приложение с UICollectionView.Каждая пользовательская ячейка имеет круговое представление прогресса и кнопку, которая должна увеличивать ее прогресс, но я не могу понять, как изменить свойства для подпредставлений конкретной ячейки внутри действия кнопки.

Я пробовал

  • добавление цели к кнопке внутри функции "cellForItemAt indexPath", но затем, как вызвать эту конкретную ячейку внутри функции цели.

  • добавление IBAction внутри пользовательского класса ячеек, но снова та же проблема

В основном проблема заключается в том, как можно вызвать конкретную ячейку по определенному пути индекса вне функции cellForItemAt

Ответы [ 2 ]

0 голосов
/ 21 июня 2019

Добавляя цель к кнопке внутри функции cellForItemAt indexPath, также отправьте путь индекса в виде тега с функцией кнопки, например: -

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let cell = tableView.dequeueReusableCell(withIdentifier: "your identifier", for: indexPath) as! MyCollectionViewCell
        cell.buttonAction = {
            //Do whatever you wish
        }
        ...
        ...
        **cell.button.tag = indexPath.row**
        return cell
    }

Затем функция, в которой вы задали цельВам нужно обновить эту конкретную ячейку, чтобы обновить пользовательский интерфейс, написав следующий код

[self.collectionView reloadItemsAtIndexPaths:@[Sender.tag]];
0 голосов
/ 20 июня 2019

Вы можете настроить свой подкласс UICollectionViewCell примерно так:

class MyCollectionViewCell: UICollectionViewCell {

    @IBOutlet weak var button: UIButton!
    @IBOutlet weak var progressView: UIProgressView!

    var buttonAction: (() -> Void)?

    @IBAction func didPressButton() {
        buttonAction?()
    }

}

и в вашем UITableViewDelegate

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    let cell = tableView.dequeueReusableCell(withIdentifier: "your identifier", for: indexPath) as! MyCollectionViewCell
    cell.buttonAction = {
        //Do whatever you wish
    }
    ...
    ...
    return cell
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...