如何从集合单元格xib文件创建出口到集合视图控制器

时间:2018-03-09 17:35:52

标签: ios swift uicollectionview xib

我有自定义Collection View Cell和.swift和.xib文件。在.xib文件中我有textField我必须从Collection ViewController中获取数据并采取相应的行动,但我不确定如何因为.xib文件具有{{1}的自定义类我无法创建} Collection View Cell文件的出口,所以我可以参考它。

如果我在Collection ViewController创建了一个插座,我无法在Collection View Cell中引用它。

2 个答案:

答案 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)

enter image description here

(2)

enter image description here

(3)

enter image description here

答案 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