TableView 中的集合视图显示项目 [VGS.CustumCell collectionView:numberOfItemsInSection:]:发送到实例的无法识别的选择器
Posted
技术标签:
【中文标题】TableView 中的集合视图显示项目 [VGS.CustumCell collectionView:numberOfItemsInSection:]:发送到实例的无法识别的选择器【英文标题】:Collection View in TableView Show item [VGS.CustumCell collectionView:numberOfItemsInSection:]: unrecognized selector sent to instance 【发布时间】:2016-11-02 07:53:07 【问题描述】:我有一个 viewController 有集合和 tableview 和 tableview 单元格它们是另一个集合视图。如果我们不使用 tableview 代码,我的第一个集合工作正常,但是当我们使用 tableview 时。我的应用程序崩溃并显示错误
[VGS.CustumCell collectionView:numberOfItemsInSection:]: unrecognized selector sent to instance .
请帮助我在 ios 中比较新。任何帮助,将不胜感激。在此先感谢
override func viewDidLoad()
super.viewDidLoad()
dayArray = ["Mon","Tue","Wed","Thu","Fri","Sat"]
let identifier = "TimeViewCell"
collection.registerNib(UINib(nibName: "TimeViewCell", bundle: nil), forCellWithReuseIdentifier: identifier)
self.timetableTableview.estimatedRowHeight = 79
self.timetableTableview.rowHeight = UITableViewAutomaticDimension
self.timetableTableview.setNeedsLayout()
self.timetableTableview.layoutIfNeeded()
// Do any additional setup after loading the view.
extension TimeTableController : UICollectionViewDelegate
func numberOfSectionsInCollectionView(collectionView: UICollectionView) -> Int
return 1
func collectionView(collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int
return 6
func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell
if collectionView.tag == 0
let cell = collectionView.dequeueReusableCellWithReuseIdentifier("TimeViewCell", forIndexPath: indexPath) as! TimeViewCell
cell.daylabel.text = dayArray[indexPath.row] as? String
if (indexPath.row == 0)
cell.backgroundColor = UIColor.firstColor()
else if (indexPath.row == 1)
cell.backgroundColor = UIColor.secondfColor()
else if (indexPath.row == 2)
cell.backgroundColor = UIColor.thirdColor()
else if (indexPath.row == 3)
cell.backgroundColor = UIColor.fourthColor()
else if (indexPath.row == 4)
cell.backgroundColor = UIColor.fifthColor()
else if (indexPath.row == 5)
cell.backgroundColor = UIColor.sixthColor()
return cell
else
let cell = collectionView.dequeueReusableCellWithReuseIdentifier("Timetable", forIndexPath: indexPath) as! Timetable
return cell
extension TimeTableController: UITableViewDelegate,UITableViewDataSource
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int
return 10
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell
let identifier = "CustumCell"
var cell: CustumCell! = tableView.dequeueReusableCellWithIdentifier(identifier) as? CustumCell
if cell == nil
var nib:Array = NSBundle.mainBundle().loadNibNamed("CustumCell", owner: self, options: nil)
cell = nib[7] as? CustumCell
let identifier = "Timetable"
cell.timecollectionView.registerNib(UINib(nibName: "Timetable", bundle: nil), forCellWithReuseIdentifier: identifier)
cell.selectionStyle = UITableViewCellSelectionStyle.None
cell.setNeedsUpdateConstraints()
cell.updateConstraintsIfNeeded()
return cell
【问题讨论】:
【参考方案1】:我刚刚遇到了类似的问题。我的问题是我在情节提要和 viewDidLoad 中都连接了委托和数据源。这取消了它。我首先尝试从我的 viewController 文件中删除我的委托和数据源连接,但它仍然没有在我的 IBOutlets 中显示内容。但是当我反之亦然时,它就成功了。确保在其中一个中声明它。
我的解决方案:
-
Disconnect via storyboard.
在视图控制器的 viewDidLoad 中声明数据源和委托。
override func viewDidLoad()
super.viewDidLoad()
mainCategoryCollectionView.delegate = self
mainCategoryCollectionView.dataSource = self
【讨论】:
【参考方案2】:您没有为collectionView
声明数据源。将其添加到您已在其中分配委托的扩展程序中。
extension TimeTableController: UICollectionViewDelegate, UICollectionViewDataSource
别忘了声明所需的功能:
func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell
【讨论】:
先生,我是单独声明的 你能展示那段代码吗?另外,你为什么在委托中声明比dataSource
函数?以上是关于TableView 中的集合视图显示项目 [VGS.CustumCell collectionView:numberOfItemsInSection:]:发送到实例的无法识别的选择器的主要内容,如果未能解决你的问题,请参考以下文章
如何将值从 tableview 传递到 collectionview
为什么Xcode提供Tableview,如果已经存在集合视图来执行任务[重复]