#ios #uitableview #imessage
#iOS #uitableview #imessage
Вопрос:
После обновления IOS 15 у меня возникла проблема с расширением приложения iMessage, когда я меняю положение ячеек, оно не работает, но в ios 14.8.1 оно будет работать. Я не знаю, почему перетаскивание не работает. если кто-то знает, как решить эту проблему, пожалуйста, помогите мне.
расширение VoteVC: UITableViewDelegate, UITableViewDataSource, UITableViewDragDelegate, UITableViewDropDelegate { табличное представление функции(_ таблиЧное представление: UITableView, раздел numberOfRowsInSection: Int) -gt; Int { возврат _data.count }
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -gt; UITableViewCell { let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath) as! CellResult cell.setData(_data[indexPath.row], idx: indexPath.row, showSequence: true, selected: m_selectedIdx == indexPath.row ) cell.selectionStyle = .none return cell } func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -gt; CGFloat { return 70 } func tableView(_ tableView: UITableView, itemsForBeginning session: UIDragSession, at indexPath: IndexPath) -gt; [UIDragItem] { return [ UIDragItem(itemProvider: NSItemProvider()) ] } func tableView(_ tableView: UITableView, dragPreviewParametersForRowAt indexPath: IndexPath) -gt; UIDragPreviewParameters? { UIDevice.vibrate() let param = UIDragPreviewParameters() param.backgroundColor = .clear return param } func tableView(_ tableView: UITableView, canHandle session: UIDropSession) -gt; Bool { return true } func tableView(_ tableView: UITableView, dropSessionDidUpdate session: UIDropSession, withDestinationIndexPath destinationIndexPath: IndexPath?) -gt; UITableViewDropProposal { if tableView.hasActiveDrag { if session.items.count gt; 1 { return UITableViewDropProposal(operation: .cancel) } else { return UITableViewDropProposal(operation: .move, intent: .insertAtDestinationIndexPath) } } else { return UITableViewDropProposal(operation: .copy, intent: .insertAtDestinationIndexPath) } func tableView(_ tableView: UITableView, performDropWith coordinator: UITableViewDropCoordinator) { let destinationIndexPath: IndexPath if let indexPath = coordinator.destinationIndexPath { destinationIndexPath = indexPath } else { let section = tableView.numberOfSections - 1 let row = tableView.numberOfRows(inSection: section) destinationIndexPath = IndexPath(row: row, section: section) } print(coordinator.items.count) let source = _data.remove(at: coordinator.items[0].sourceIndexPath!.row) _data.insert(source, at: destinationIndexPath.row) self.m_selectedIdx = -1 tblData.reloadData() UIDevice.vibrate() }
}
class CellResult: UITableViewCell { @IBOutlet var lblOption: RoundText! public func setData(_ data:OptionModel, idx:Int, showSequence:Bool, selected:Bool) { for vw in self.subviews { if vw.tag == 100 { vw.removeFromSuperview() } } if showSequence { let lblSeq = UILabel() lblSeq.font = lblOption.font lblSeq.textColor = UIColor.white lblSeq.frame = lblOption.frame lblSeq.frame.origin.x = 10 lblSeq.tag = 100 if idx == 0 { lblSeq.text = "1st " } else if idx == 1 { lblSeq.text = "2nd " } else if idx == 2 { lblSeq.text = "3rd " } else { lblSeq.text = "4th " } self.addSubview(lblSeq) lblOption.text = " " } else { lblOption.text = "" } lblOption.text = lblOption.text! data.title lblOption._borderColor = OptionColors[idx]! if selected { lblOption._borderColor = UIColor.white } lblOption.textColor = UIColor.white }
}
Кто-нибудь, помогите мне решить эту проблему, спасибо.