gpt4 book ai didi

ios - 将 block 形式的 objective-c 解决为 swift 3

转载 作者:行者123 更新时间:2023-11-28 06:16:28 25 4
gpt4 key购买 nike

我在 block 上遇到了麻烦,在 objective-c 上它运行良好,但我无法转换为 swift 3,

在 objective-c 中

typedef void (^PanCellToDeleteBlock)(NSIndexPath *cellIndexPath);

@interface MyCollectionViewCell : UICollectionViewCell<UIGestureRecognizerDelegate>

@property (copy , nonatomic) PanCellToDeleteBlock panCellToDeleteBlock;

在 swift 3 情况下

public typealias PanCellToDeleteBlock = (_ cell:NSIndexPath) -> Void

class MyCollectionViewCell: UICollectionViewCell,UIGestureRecognizerDelegate {

let panCellToDeleteBlock:PanCellToDeleteBlock? = nil

看起来不快......

这是我在同一个类(class)使用它的时候

在 objective-c 中

if (_panCellToDeleteBlock) {
_panCellToDeleteBlock(_cellIndexPath);
}

在快速的情况下,一切看起来都是错误的

if (self.panCellToDeleteBlock != nil) {
self.panCellToDeleteBlock(self.cellIndexPath)
}

这是必须疯狂的部分,这是在 viweControllerOC案例

cell.panCellToDeleteBlock = ^(NSIndexPath *cellIndexPath){
[weakSelf.dataArray removeObjectAtIndex:cellIndexPath.row];
[weakSelf.collectionView reloadData];
};

swift 部分我已经无能为力了....

最佳答案

Swift 3 的等价物是

public typealias PanCellToDeleteBlock = (IndexPath) -> Void

class MyCollectionViewCell: UICollectionViewCell,UIGestureRecognizerDelegate {

var panCellToDeleteBlock : PanCellToDeleteBlock?

self.panCellToDeleteBlock?(self.cellIndexPath)

cell.panCellToDeleteBlock = { [weak self] indexPath in
self?.dataArray.remove(at: indexPath.row)
self?.collectionView.reloadData()
}

关于ios - 将 block 形式的 objective-c 解决为 swift 3,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44993039/

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