Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/110.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios Swift 4:Xib具有集合视图,可重用故事板中的单元,内部插座为零_Ios_Swift_Uitableview_Uicollectionview_Swift4 - Fatal编程技术网

Ios Swift 4:Xib具有集合视图,可重用故事板中的单元,内部插座为零

Ios Swift 4:Xib具有集合视图,可重用故事板中的单元,内部插座为零,ios,swift,uitableview,uicollectionview,swift4,Ios,Swift,Uitableview,Uicollectionview,Swift4,我有一个在主情节提要集合视图中使用的单元格: class TaskCell: UICollectionViewCell { @IBOutlet weak var exerciseTitle: UILabel! override func awakeFromNib() { super.awakeFromNib() self.layer.borderWidth = 1 self.layer.borderColor = #color

我有一个在主情节提要集合视图中使用的单元格:

class TaskCell: UICollectionViewCell {

    @IBOutlet weak var exerciseTitle: UILabel!


    override func awakeFromNib() {
        super.awakeFromNib()
        self.layer.borderWidth = 1
        self.layer.borderColor = #colorLiteral(red: 0.6666666865, green: 0.6666666865, blue: 0.6666666865, alpha: 1)
    }

}
我创建了一个包含集合视图的XIB,并尝试在XIB的集合视图中使用此单元格。该单元已退出队列,但其内部的所有出口均为零

class AddTaskToSessionVC: UIViewController, UICollectionViewDataSource, UICollectionViewDelegate {

    @IBOutlet weak var collectionView: UICollectionView!      
    public var allTasks = [TaskCodableEntity]()

    override func awakeFromNib() {
        super.awakeFromNib()    
    }

    override func viewDidLoad() {
        super.viewDidLoad()
        self.collectionView.delegate = self
        self.collectionView.dataSource = self           
        self.collectionView.register(TaskCell.self, forCellWithReuseIdentifier: "TaskCell")
        self.getCurrentPatientTasks()

        // Do any additional setup after loading the view.
    }

    public func getCurrentPatientTasks() {

       self.allTasks =  API.getTasks()
        }
    }

    func numberOfSections(in collectionView: UICollectionView) -> Int {
        return self.collectionView.showNoDataLabel(array: self.allTasks)
    }

    func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
        return self.allTasks.count
    }

    func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
        if let cell = self.collectionView.dequeueReusableCell(withReuseIdentifier: "TaskCell", for: indexPath) as? TaskCell {
            let taskEntity = self.allTasks[indexPath.row] 
                cell.exerciseTitle.text = taskEntity.title
            ***(Here exerciseTitle is nil)***

            return cell
        }
        return UICollectionViewCell()
    }
}
我的XIB看起来像:

我试图在单元格内实例化标签,但它仍然保持为零
有没有办法以这种方式重用单元,或者我应该创建XIB单元,尽管已经存在单元?

您需要像这样注册XIB单元

 collectionView.register(UINib(nibName: "TaskCell", bundle: nil), forCellWithReuseIdentifier: "TaskCell")
就这样

TaskCell.self
以编程方式创建单元格时使用


为了方便地使用xib视图,以及它的重用,我建议您查看框架

我想在这段引文中你们可以找到你们问题的答案。我认为您需要为类设置文件所有者(而不是视图),并且您可以使用
NibOwnerLoadable
可重用
协议来更轻松地重用和加载视图

声明您的视图以符合NibLoadable或nibownerload

如果您正在使用的XIB不使用其 “文件所有者”和您正在设计的可重用视图是根视图 锡伯族人

如果使用的是“文件”的,请使用NibOwnerLoadable协议 属于可重用视图类的XIB的“所有者”,以及 XIB的根视图将设置为提供其 内容


希望它能帮助你

但我没有单元的XIB,它是故事板中使用的类如果你在IB中有一个原型单元,那么不需要注册它,只需要给它一个标识符并在CellForItemAt中使用它当我使用你的行时,我得到一个异常:“NSInternalInconsistencyException”,原因:'无法在捆绑包中加载NIB:'名为'TaskCell'的NSBundle'如果没有NIB注释任何寄存器行如果删除寄存器行,则会出现下一个异常:NSInternalInconsistencyException',原因:“无法将类型为的视图出列:标识符为TaskCell的UICollectionElementKindCell-必须为标识符注册nib或类,或在情节提要中连接原型单元格”您的exerciseTitle标签存在于何处,在哪个XIB中?如果您的单元是集合视图中的原型单元,则无需注册该单元,只需在XIB中选择原型单元,并从属性检查器右侧面板中将重用标识符设置为“TaskCell”,然后删除注册代码。将单元格的标签连接到exerciseTitle变量作为outlet clean并生成项目。@vivekDas请参见此处的对话也选择您的原型单元格并将自定义类设置为“TaskCell”,然后将标签的outlet连接到exerciseTitle。我尝试过使用库,但结果相同,出列后,内部出口为零cell@AlexBerd您的
XIB
看起来不是将
Cell
插入到集合中,而是通常将
UIView
插入到集合中?也许这是你的问题?