如何修复委托和协议?

时间:2016-08-15 07:34:55

标签: swift delegates protocols

我想在集合视图中使用表格视图单元格的数据。那些是在同一个控制器。我怎样才能做到这一点 ?当我尝试这个时,委托来了,没有任何反应.Nevermind CellForRowAtIndexPath,numberOfRowsInSection方法。

protocol DataDelegate {
func dataInfo(survey:Survey)


}

import UIKit

class SurveyViewControllerLeftTableView: UITableView,UITableViewDataSource,UITableViewDelegate {

var survey = [Survey]()

var  myDelegate : DataDelegate? 

override func awakeFromNib() {
    self.dataSource=self
    self.delegate=self

}



func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {


     myDelegate?.dataInfo(survey[(indexPathForSelectedRow?.row)!])

}

}


import UIKit

class BottomCollectionView: UICollectionView,UICollectionViewDataSource,UICollectionViewDelegate,DataDelegate {


var surveyBottomCollection = [Survey]()



override func awakeFromNib() {
super.awakeFromNib()


self.delegate = self
self.dataSource = self
}

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


func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell {

    let cell  : BottomCollectionViewCell = dequeueReusableCellWithReuseIdentifier("cell", forIndexPath: indexPath) as! BottomCollectionViewCell

    cell.surveyQuestionNumberLabel.text = surveyBottomCollection[indexPath.row].questionNumber
cell.surveyQuestionDescriptionLabel.text = surveyBottomCollection[indexPath.row].questionDescription

    return cell

}

func dataInfo(survey: Survey) {
print(survey.questionDescription)

    surveyBottomCollection.append(survey)
    self.reloadData()
}

1 个答案:

答案 0 :(得分:0)

根据我的知识,您需要创建['foo', 'bar'] + ['bar', 'baz']自定义单元格或需要在UITableView中创建单元格,然后使用下面的代码将storyboard单元格数据导入您的表格视图单元格。< / p>

同时选择任何单元CollectionView将调用并执行select函数时,您需要将该tableview数组对象相互添加tableview:didSelect并在您Array中使用该数组查看单元格。

Collection

更新:

 func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
            var cell:UITableViewCell = self.tableView.dequeueReusableCellWithIdentifier("cell") as UITableViewCell

            // Replace Beow line with your costume cell outlets 
            cell.textLabel?.text = self.items[indexPath.row]

           //Like this Probably same like collection view or what ever you want to rename it in TableViewCell
           cell.surveyQuestionNumberLabel.text = surveyBottomCollection[indexPath.row].questionNumber
           cell.surveyQuestionDescriptionLabel.text = surveyBottomCollection[indexPath.row].questionDescription

            return cell
 }

希望上面的代码将帮助您实现您想要的目标。