我有以下內容,我試圖了解如何將indexPath.rowfor傳遞UICollectionViewCell到 中,previewProvider以便我可以預覽所選影像的較大版本。
我有一組較大的影像,這些影像通過 indexPath.row
我嘗試更改為 makeRatePreview(cellIndex: Int) 并傳入索引,但這只會引發錯誤。
func collectionView(_ collectionView: UICollectionView,
contextMenuConfigurationForItemAt indexPath: IndexPath,
point: CGPoint) -> UIContextMenuConfiguration? {
return UIContextMenuConfiguration(identifier: nil, previewProvider: makeRatePreview) { suggestedActions in
let inspectAction =
UIAction(title: NSLocalizedString("InspectTitle", comment: ""),
image: UIImage(systemName: "arrow.up.square")) { action in
}
let deleteAction =
UIAction(title: NSLocalizedString("DeleteTitle", comment: ""),
image: UIImage(systemName: "trash"),
attributes: .destructive) { action in
}
return UIMenu(title: "", children: [inspectAction, deleteAction])
}
}
// MARK: - Context menu for images
func makeRatePreview() -> UIViewController {
let viewController = UIViewController()
// 1
let imageView = UIImageView(image: UIImage(named: "rating_star"))
viewController.view = imageView
// 2
imageView.frame = CGRect(x: 0, y: 0, width: 100, height: 100)
imageView.translatesAutoresizingMaskIntoConstraints = false
imageView.backgroundColor = .blue
// 3
viewController.preferredContentSize = imageView.frame.size
return viewController
}
uj5u.com熱心網友回復:
UIContextMenuConfiguration的初始預計UIContextMenuContentPreviewProvider的previewProvider說法。
在檔案中:
public typealias UIContextMenuContentPreviewProvider = () -> UIViewController?
這意味著我們要傳入一個閉包。你可以通過,makeRatePreview因為它是型別() -> UIViewController。
但是,當您將其更改makeRatePreview(cellIndex: 0)為現在的型別時UIViewController,這是不正確的。要解決此問題,只需通過{ ... }在呼叫周圍添加來將其放入閉包中:
{ makeRatePreview(cellIndex: 0) }
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/364958.html
