Я пишу приложение (вид игры) со словами.Итак, у меня есть WordsVC с CollectionView
(где каждая ячейка является словом).И когда слово (ячейка) долго нажимается, я хочу показать поповер с переводом рядом с ячейкой.
Но я не могу добавить segue в ячейку (Xcode выдает ошибку, что-то вроде «не могу скомпилировать»).Итак, я переключаюсь с CollectionView
на TraslationVC (popover).И это проблема, потому что всплывающее окно выскакивает в левом верхнем углу представления коллекции (мне нужно рядом с повернутой ячейкой).
Я не мог точно ответить, выполнив поиск.Что я могу сделать, чтобы достичь этого?
Вот код:
Подготовка к переходу в WordsVC:
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
// for another segue
if segue.identifier == "fromWordsToWin" {
if let wvc = sender as? WordsViewController {
if let winVC = segue.destination as? WinningViewController {
winVC.completedLevel = wvc.currentLevel
winVC.levelsCount = wvc.dataSource.count()
winVC.resultTime = wvc.result
}
}
}
// here
if segue.identifier == "translationSegue" {
if let cell = sender as? WordCell {
if let tvc = segue.destination as? TranslationViewController {
tvc.text = cell.myLabel.text ?? "empty cell"
if let ppc = tvc.popoverPresentationController {
ppc.delegate = self
}
}
}
}
}
Настройка немодального стиля в WordsVC:
func adaptivePresentationStyle(for controller: UIPresentationController) -> UIModalPresentationStyle {
return UIModalPresentationStyle.none
}
Segueing (fromWordsVC):
@objc func longTap(_ sender: UIGestureRecognizer) {
print("long tap happend")
if let cell = sender.view as? WordCell {
performSegue(withIdentifier: "translationSegue", sender: cell)
}
И настройка размера поповера в TranslatingVC:
override var preferredContentSize: CGSize {
get {
if textView != nil && presentingViewController != nil {
return textView.sizeThatFits(presentingViewController!.view.bounds.size)
} else {
return super.preferredContentSize
}
}
set { super.preferredContentSize = newValue}
}
Как это сделать?