gpt4 book ai didi

swift - iOS13上下文菜单点击时如何显示或导航到当前的查看 View

转载 作者:行者123 更新时间:2023-12-03 09:16:43 24 4
gpt4 key购买 nike

我正在尝试在表格 View 中实现 iOS13 中的“上下文菜单”(也尝试过 Collection View ,它们有同样的问题):

我按照指示 here ,用一堆照片创建了一个收藏 View ,当 3d touch 时,我会得到一个带有 Action 列表的预览,如下所示:

Peek and Menu View

Collection View

UITableView 中的委托(delegate)方法:

- (void)tableView:(UITableView *)tableView willCommitMenuWithAnimator:
(id<UIContextMenuInteractionCommitAnimating>)animator;

并在 collectionView
- (void)collectionView:(UICollectionView *)collectionView willCommitMenuWithAnimator:
(id<UIContextMenuInteractionCommitAnimating>)animator;

两者都没有“ indexPath”;

所以我无法传递我正在查看的当前单元格或索引。

我想实现这个委托(delegate)方法,所以当我点击预览图像时,它将导航到预期的页面,其中包含绑定(bind)到当前单元格的信息。

我想要并尝试的是这样的:
func collectionView(_ collectionView: UICollectionView, willCommitMenuWithAnimator animator: UIContextMenuInteractionCommitAnimating) {
animator.addAnimations {
self.show(PreviewViewController(image: UIImage(named: "indexpathString")), sender: self)
}
}

indexpathString与当前选定的单元格或集合相关,因此我可以基于它初始化 viewController。

请让我知道是否有其他方法可以做到这一点。

最佳答案

函数contextMenuInteraction(_:willCommitWithAnimator:)已被 tableView(_:willPerformPreviewActionForMenuWith:animator:) 取代,它提供了 UIContextMenuConfiguration与呈现的菜单相关联。在您的菜单出现的地方,分配一个标识符,以便您识别该行。标识符应该是任何 NSCopying对象 - 例如一个 NSIndexPath :

override func tableView(_ tableView: UITableView, contextMenuConfigurationForRowAt indexPath: IndexPath, point: CGPoint) -> UIContextMenuConfiguration? {
// Pass the indexPath as the identifier for the menu configuration
return UIContextMenuConfiguration(identifier: indexPath as NSIndexPath, previewProvider: nil) { _ in
// Empty menu for demonstration purposes
return UIMenu(title: "", children: [])
}
}

然后在 willPerformPreviewActionForMenuWith:animator: 中使用该标识符功能:
override func tableView(_ tableView: UITableView, willPerformPreviewActionForMenuWith configuration: UIContextMenuConfiguration, animator: UIContextMenuInteractionCommitAnimating) {
guard let indexPath = configuration.identifier as? IndexPath else { return }

// Use your index path to get your destination VC in some way; arbitrary example shown...
let destinationVc = destinationViewController(for: indexPath)

// Then animate the appearance of the VC with the provided animator
animator.addAnimations {
self.show(destinationVc, sender: self)
}
}

关于swift - iOS13上下文菜单点击时如何显示或导航到当前的查看 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57300658/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com