SourceView 和 SourceRect 是否贬值?
SourceView and SourceRect is depreciated?
我正在尝试修复我的项目的所有警告,但我似乎不知道该怎么做。
我收到的警告是:
'sourceView' 在 iOS 13.0 中被弃用:重命名为 'UIContextMenuInteraction'
我已经阅读了文档 here 但我仍然不知道如何修复此警告?
这是它正在谈论的代码:
extension CollectionsViewController: UIViewControllerPreviewingDelegate {
func previewingContext(_ previewingContext: UIViewControllerPreviewing, viewControllerForLocation location: CGPoint) -> UIViewController? {
let tableView = previewingContext.sourceView as! UITableView
if let indexPath = tableView.indexPathForRow(at: location) {
let cell = tableView.cellForRow(at: indexPath) as! CollectionCell
let touch = cell.convert(location, from: tableView)
if let productResult = cell.productFor(touch) {
previewingContext.sourceRect = tableView.convert(productResult.sourceRect, from: cell)
return self.productDetailsViewControllerWith(productResult.model)
} else if let collectionResult = cell.collectionFor(touch) {
previewingContext.sourceRect = tableView.convert(collectionResult.sourceRect, from: cell)
return self.productsViewControllerWith(collectionResult.model)
}
}
return nil
}
func previewingContext(_ previewingContext: UIViewControllerPreviewing, commit viewControllerToCommit: UIViewController) {
self.navigationController!.show(viewControllerToCommit, sender: self)
}
}
如有任何帮助,我们将不胜感激!
UIViewControllerPreviewingDelegate 协议更改为 documented:
Deprecated
UseUIContextMenuInteractionDelegate instead.
因此您需要删除 previewingContext
委托方法而不是更改其参数 sourceview 等。您需要从新协议中选择而不是此方法 UIContextMenuInteractionDelegate
的
按照 Apple 的指示委托方法。
换句话说,你的扩展已经完全过时了,你需要根据新协议重写。
我正在尝试修复我的项目的所有警告,但我似乎不知道该怎么做。
我收到的警告是:
'sourceView' 在 iOS 13.0 中被弃用:重命名为 'UIContextMenuInteraction'
我已经阅读了文档 here 但我仍然不知道如何修复此警告?
这是它正在谈论的代码:
extension CollectionsViewController: UIViewControllerPreviewingDelegate {
func previewingContext(_ previewingContext: UIViewControllerPreviewing, viewControllerForLocation location: CGPoint) -> UIViewController? {
let tableView = previewingContext.sourceView as! UITableView
if let indexPath = tableView.indexPathForRow(at: location) {
let cell = tableView.cellForRow(at: indexPath) as! CollectionCell
let touch = cell.convert(location, from: tableView)
if let productResult = cell.productFor(touch) {
previewingContext.sourceRect = tableView.convert(productResult.sourceRect, from: cell)
return self.productDetailsViewControllerWith(productResult.model)
} else if let collectionResult = cell.collectionFor(touch) {
previewingContext.sourceRect = tableView.convert(collectionResult.sourceRect, from: cell)
return self.productsViewControllerWith(collectionResult.model)
}
}
return nil
}
func previewingContext(_ previewingContext: UIViewControllerPreviewing, commit viewControllerToCommit: UIViewController) {
self.navigationController!.show(viewControllerToCommit, sender: self)
}
}
如有任何帮助,我们将不胜感激!
UIViewControllerPreviewingDelegate 协议更改为 documented:
Deprecated UseUIContextMenuInteractionDelegate instead.
因此您需要删除 previewingContext
委托方法而不是更改其参数 sourceview 等。您需要从新协议中选择而不是此方法 UIContextMenuInteractionDelegate
的
按照 Apple 的指示委托方法。
换句话说,你的扩展已经完全过时了,你需要根据新协议重写。