Можно ли выполнить анимацию / перемещение в uitableviewcell после создания ячейки?

Это то, что я хочу, у меня есть таблица с 3 пользовательскими ячейками. Каждая ячейка выполняет разные функции, и ячейке 2 нужна информация из ячейки 1, а ячейке 3 нужна информация из ячейки 2. Поэтому, чтобы сделать ее немного более интуитивной, я пытаюсь выполнить перемещение ячейки в ячейке 2 (переход от внешнего экрана к внутренний экран (т. е. вставной) при нажатии кнопки в ячейке 1. По сути, я пытаюсь переместить ячейку снаружи в представление внутрь представления при создании кнопки.

К сожалению, это происходит сбой, обычно этот тип движения работает в обычных случаях, но происходит сбой на TableView.

Можно ли выполнять перемещение с помощью CGAffine после отображения ячейки?

Это функция, которую я использую, которую я сделал для простоты использования.

func movementAnimation(duration:Double,X:CGFloat,Y:CGFloat,item:UIView)
{
    UIView.animate(withDuration: duration) {
      item.transform = CGAffineTransform(translationX: X, y: Y)

    }
}

Функция перемещения вида в область отображения при нажатии кнопки. Это делается внутри действия кнопки внутри класса ячейки.


 @IBAction func buttonAction(_ sender: Any) {

movementAnimation(duration: 0.5, X: 0, Y: 0, item: viewDate)


    }

Это в основном скользящая ситуация.

Есть ли способ обойти это, сделать это движение без сбоев?

Всего 1 ответ


Поэтому, покопавшись, я нашел способ обойти эту проблему.

Я сделал простое уведомление, чтобы проверить, когда была нажата кнопка. На клеточном классе,

    @IBAction func ActionPaymentOne(_ sender: Any) {

         NotificationCenter.default.post(name: 
    Notification.Name("moveAnimation"), object: nil)

    }

Теперь в классе tableViewController я добавил это в viewDidLoad ()

 NotificationCenter.default.addObserver(self, selector: 
#selector(self.moveAnimation(notification:)), name: 
Notification.Name("moveAnimation"), object: nil)

Теперь я добавил функцию для этого

@objc func moveAnimation(notification: Notification)
    {
        let index = IndexPath(row: 1, section: 0)
        let currentCell = Table.cellForRow(at: index)! as! PaymentsTableViewCell
        movementAnimation(duration: 0.5, X: 0, Y: 0, item: currentCell.viewDate)
    }

Так как я знаю, какая ячейка, я просто сделал статическое значение индекса. Если кто-то хочет сделать это для любой случайной ячейки, вы можете сделать это, получив путь ячейки от делегата тега или кнопки.