[英]tableView.selectRow(...) doesn't work when I use UIAdaptivePresentationControllerDelegate (Swift 5)
在我的應用程序中,我使用.present(...)
在另一個視圖之上顯示一個視圖 Controller(這些是相同的 VC)。 當我關閉它(從屏幕上下拉)時,我想在我的第一個 VC 中輸入 select 某行。 為此,我使用 UIAdaptivePresentationControllerDelegate,其中我有print(...)
和tableView.selectRow(...)
function。打印工作正常,但 tableView.selectRow 不起作用。 可能是什么問題?
extension UIViewController {
class func loadFromStoryboard<T: UIViewController>() -> T {
let name = String(describing: T.self)
let storyboard = UIStoryboard(name: name, bundle: nil)
if let viewController = storyboard.instantiateInitialViewController() as? T {
return viewController
} else {
fatalError("Error: No initial view controller in \(name) stroryboard")
}
}
}
class MyTabBarController: UITabBarController {
let firstVC: FirstVC = FirstVC.loadFromStoryboard()
...
override func viewDidLoad() {
super.viewDidLoad()
loadViewControllers()
}
private func generateViewController(rootViewController: UIViewController, image: UIImage?, title: String) -> UIViewController {
let navigationVC = UINavigationController(rootViewController: rootViewController)
...
return navigationVC
}
private func loadViewControllers() {
viewControllers = [
generateViewController(rootViewController: firstVC, image: ..., title: "...")
]
}
...
private func openVC() {
let storyboard = UIStoryboard(name: "FirstVC", bundle: nil)
let vc = storyboard.instantiateViewController(identifier: "FirstVC") as! FirstVC
vc.presentationController?.delegate = vc
self.present(vc, animated: true, completion: nil)
}
...
}
//FirstVC
extension FirstVC: UIAdaptivePresentationControllerDelegate {
func presentationControllerDidDismiss(_ presentationController: UIPresentationController) {
print("VC was dismissed")
self.tableView.selectRow(at: IndexPath(row: 0, section: 0), animated: true, scrollPosition: .none)
}
}
在控制台中,我看到“VC 被解雇”,但行不是 select。
PS 我使用 Xcode 12.2 和 iOS 14.2。 tableView
是一個 IBOutlet,如果它很重要的話。
你應該設置:
vc.presentationController?.delegate = self
代替:
vc.presentationController?.delegate = vc
因為你一解雇 vc 就失去了委托。 你應該在你展示 FirstVC 的地方聽到對 FirstVC 的解雇。
如果你只是想念它也沒關系。 但如果你不明白為什么我可以分享更多細節:)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.