我有自定义Collection View Cell
和.swift和.xib文件。在.xib文件中我有textField
我必须从Collection ViewController
中获取数据并采取相应的行动,但我不确定如何因为.xib文件具有{{1}的自定义类我无法创建1>} Collection View Cell
文件的出口,所以我可以参考它。
如果我在Collection ViewController
创建了一个插座,我无法在Collection View Cell
中引用它。
答案 0 :(得分:0)
你做不到。 您无法创建引用放置在CollectionViewController中自定义CollectionViewCell内的UITextField的插座。
你可以做的是在相应的CollectionViewCell .swift类(1)中创建一个引用.xib中的UITextField的插座,创建一个引用CollectionViewController中的collectionView的插座(2 ),并在collectionView(3)中使用这些CollectionViewCell。
然后,您可以通过单元格本身(3)访问CollectionViewController中特定CollectionViewCell的UITextField,例如:
let indexPath = IndexPath(row: 2, section: 0)
let cell = self.collectionView.cellForItemAtIndexPath(indexPath) as! CollectionViewCell // so the compiler knows that the cell you are referring to is of type CollectionViewCell and thus has your custom textField property
let textInTextField = cell.textField.text
(1)
(2)
(3)
答案 1 :(得分:-1)
据我所知,您需要一种从CollectionViewCell访问CollectionViewController数据的方法,如果是这种情况,您可以尝试以下方法:
extension UIView {
var parentViewController: UIViewController? {
var parentResponder: UIResponder? = self
while parentResponder != nil {
parentResponder = parentResponder!.next
if let viewController = parentResponder as? UIViewController {
return viewController
}
}
return nil
}
}
//In the CollectionViewCell class
if let controller = self.parentViewController as? YourViewController
{
controller.action()
}
通过此扩展,您可以访问单元的父控制器并执行功能或根据需要获取数据
一个例子: https://github.com/AngelH2/CollectionViewCell-Comunication/tree/master/CollectionCellAction