[英]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.