Ну, после многих исследований и проб и ошибок я узнал, как это сделать ...
Похоже, что представление Popover должно иметь CGRect элемента, вызывающего его. Таким образом, нет способа избежать кода для этого.
Есть способы сделать это, либо вызывая segue программно с помощью кнопки, либо с помощью функции prepareForSegue
. Я решил сделать позже следующим образом:
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
guard let popOver=segue.destination as? DataSelectionTableViewController, let temporaryButton=sender as? UIButton else {
return
}
popOver.popoverPresentationController?.delegate = self
popOver.popoverPresentationController?.sourceView = temporaryButton
popOver.popoverPresentationController?.sourceRect = temporaryButton.bounds
if segue.identifier=="popOverSegueID"{
popOver.dataArray=[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
}
}
В приведенном выше фрагменте представления PopOver используется TableViewController. На главном экране будет отображаться только этот вид перехода, и всплывающее окно будет вызываться с 3 разных кнопок, заполняющих TableView различными данными. Если основной вид имеет разные сегменты или всплывающие окна, весь код должен находиться внутри
if segue.identifier=="popOverSegueID"{ ... }
Я просто сделал это так, как показал, чтобы избежать копирования кода.
Надеюсь, это поможет.