gpt4 book ai didi

ios - Swift 3.0 中的选择器

转载 作者:可可西里 更新时间:2023-11-01 00:57:49 26 4
gpt4 key购买 nike

我对 Swift 3.0 有疑问

在 Objective-C 中,您可以像这样为 selector 声明一个属性

@property (nonatomic,assign)SEL ItemSelected;

但是如何在 Swift 3.0 中将选择器声明为属性,因为我想在其他类中使用此属性并且应该在该类中进行操作。

我正在尝试像这样使用它(在 tableview 单元格中声明):

var itemSelected = #selector(selctedItem(_ :))

在 viewcontroller table view cell 中使用它

cell.itemSelected(target: self, action: HomeViewController.self.selctedItem(_ :))

报错

use of Undeclared item selectedItem

我不确定如何在带有选择器的 TableView 中使用。

最佳答案

您可以像这样在 Swift 3 中声明选择器。

var itemSelected: Selector?

或者

var itemSelected = #selector(tapGesture) 

稍后你可以使用上面的itemSelected选择器具有这样的操作。

例如:

let tap = UITapGestureRecognizer(target: self, action: itemSelected)

tapGesture声明为

func tapGesture(_ sender: UITapGestureRecognizer) { }

编辑:您添加了collectionView在你的里面 TableViewCell , 所以要得到 CollectionViewCell 的选定 IndexPath ,声明一个协议(protocol)并将其与您的 tableViewCell 一起使用。

protocol SelectedCellDelegate {
func getIndexPathOfSelectedCell(tableIndexPath: IndexPath, collectionViewCell indexPath: IndexPath)
}

现在创建一个 SelectedCellDelegate 实例和一个 IndexPath 实例在您的 CustomTableViewCell 中。

class CustomTableCell: UITableViewCell, UICollectionViewDelegate, UICollectionViewDataSource {
//All outlet

var delegate: SelectedCellDelegate?
var tableCellIndexPath = IndexPath()

//CollectionViewDataSource method

func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
self.delegate?.getIndexPathOfSelectedCell(tableIndexPath: tableCellIndexPath, indexPath: indexPath)
}

}

现在在您添加了 TableView 的 ViewController 中实现协议(protocol) SelectedCellDelegate并设置 delegatetableCellIndexPathcellForRowAt indexPath方法。

class ViewController: UIViewController, UITableViewDelegate, UITableViewDataSource, SelectedCellDelegate {
//your methods

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell // Initialize the cell with your custom TableCell
cell.delegate = self
cell.tableCellIndexPath = indexPath
return cell
}

现在在您的 ViewController 中添加委托(delegate)方法。

func getIndexPathOfSelectedCell(tableIndexPath: IndexPath, collectionViewCell indexPath: IndexPath)  {
print("TableView cell indexPath - \(tableIndexPath)")
print("CollectionView cell indexPath - \(indexPath)")
}

关于ios - Swift 3.0 中的选择器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41327152/

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