3

I can connect the delegate, however, when connecting the data source I am getting the following error:

2015-07-13 16:45:17.529 paintApp[4628:168318] -[UIView collectionView:numberOfItemsInSection:]: unrecognized selector sent to instance 0x7f8a12651c60 2015-07-13 16:45:17.539 paintApp[4628:168318] * Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[UIView collectionView:numberOfItemsInSection:]: unrecognized selector sent to instance 0x7f8a12651c60' * First throw call stack: ( 0 CoreFoundation 0x0000000107f67b75 exceptionPreprocess + 165 1 libobjc.A.dylib 0x0000000109cf7bb7 objc_exception_throw + 45 2 CoreFoundation 0x0000000107f6ec8d -[NSObject(NSObject) doesNotRecognizeSelector:] + 205 3 CoreFoundation 0x0000000107ec66fc ___forwarding_ + 988 4 CoreFoundation 0x0000000107ec6298 _CF_forwarding_prep_0 + 120 5 UIKit 0x00000001090a5286 -[UICollectionViewData _updateItemCounts] + 296 6 UIKit 0x00000001090a7469 -[UICollectionViewData numberOfSections] + 22 7 UIKit 0x000000010909158e -[UICollectionViewFlowLayout _getSizingInfos] + 348 8 UIKit 0x0000000109092689 -[UICollectionViewFlowLayout _fetchItemsInfoForRect:] + 526 9 UIKit 0x000000010908deff -[UICollectionViewFlowLayout prepareLayout] + 257 10 UIKit 0x00000001090a53f0 -[UICollectionViewData _prepareToLoadData] + 67 11 UIKit 0x00000001090a5ac9 -[UICollectionViewData validateLayoutInRect:] + 54 12 UIKit 0x000000010906e198 -[UICollectionView layoutSubviews] + 170 13 UIKit 0x0000000108ab3303 -[UIView(CALayerDelegate) layoutSublayersOfLayer:] + 521 14 QuartzCore 0x000000010d463de8 -[CALayer layoutSublayers] + 150 15 QuartzCore 0x000000010d458a0e _ZN2CA5Layer16layout_if_neededEPNS_11TransactionE + 380 16 QuartzCore 0x000000010d45887e _ZN2CA5Layer28layout_and_display_if_neededEPNS_11TransactionE + 24 17 QuartzCore 0x000000010d3c663e _ZN2CA7Context18commit_transactionEPNS_11TransactionE + 242 18 QuartzCore 0x000000010d3c774a _ZN2CA11Transaction6commitEv + 390 19 UIKit 0x0000000108a3795d -[UIApplication _reportMainSceneUpdateFinished:] + 44 20 UIKit 0x0000000108a3866a -[UIApplication _runWithMainScene:transitionContext:completion:] + 2684 21 UIKit 0x0000000108a37005 -[UIApplication workspaceDidEndTransaction:] + 179 22 FrontBoardServices 0x000000010c58d253 31-[FBSSerialQueue performAsync:]_block_invoke + 16 23 CoreFoundation 0x0000000107e9c9bc __CFRUNLOOP_IS_CALLING_OUT_TO_A_BLOCK + 12 24 CoreFoundation 0x0000000107e92705 __CFRunLoopDoBlocks + 341 25 CoreFoundation 0x0000000107e924c5 __CFRunLoopRun + 2389 26 CoreFoundation 0x0000000107e91906 CFRunLoopRunSpecific + 470 27 UIKit 0x0000000108a36a72 -[UIApplication _run] + 413 28 UIKit 0x0000000108a39870 UIApplicationMain + 1282 29 paintApp 0x0000000107d7272e top_level_code + 78 30 paintApp 0x0000000107d7276a main + 42 31 libdyld.dylib 0x000000010a4d3145 start + 1 32 ??? 0x0000000000000001 0x0 + 1 ) libc++abi.dylib: terminating with uncaught exception of type NSException (lldb)

Here is my view controller class :

import UIKit

class ViewControllerGallery: UIViewController, UICollectionViewDataSource, UICollectionViewDelegate {

var tableData: [String] = ["img1" , "img2"]
var tableImages: [String] = ["file1.png", "file2.png"]

var collectionView: UICollectionView!

override func viewDidLoad() { 
    super.viewDidLoad() 
    collectionView = UICollectionView(frame: self.view.frame) 
    collectionView.dataSource = self 
    collectionView.delegate = self 
    collectionView.registerClass(UICollectionViewCell.self,     forCellWithReuseIdentifier: "Cell")

    self.view.addSubview(collectionView) 

    // Do any additional setup after loading the view. 

}

override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()
    // Dispose of any resources that can be recreated.
}

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


func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell {
    let cell : ColViewCell = collectionView.dequeueReusableCellWithReuseIdentifier("Cell", forIndexPath : indexPath) as ColViewCell
    cell.labelCell.text = tableData[indexPath.row]
    cell.imgCell.image = UIImage(named : tableImages[indexPath.row])
    return cell //UICollectionViewCell()
}


func collectionView(collectionView: UICollectionView, didSelectItemAtIndexPath indexPath: NSIndexPath) {
    println("Cell \(indexPath.row) selcted")
}

}

Here is my 'cell' class where have connected the cells image and label to:

import UIKit

class ColViewCell: UICollectionViewCell {

@IBOutlet var imgCell: UIImageView!

@IBOutlet var labelCell: UILabel!

}
0

1 Answer 1

5

Your error is self-explanative enough. In place, where you set collectionView.dataSource you have an error source - instead of something implementing UICollectionViewDataSource you set UIView instance.

I think, you need something like

override func viewDidLoad() {
    super.viewDidLoad()

    // Do any additional setup after loading the view.
    collectionView.dataSource = self;
 }
Sign up to request clarification or add additional context in comments.

9 Comments

Thanks for your answer! I'm not sure I have set collectionView.dataSource anywhere? I have used the following to try correct :
var collectionView: UICollectionView! override func viewDidLoad() { super.viewDidLoad() collectionView = UICollectionView(frame: self.view.frame) collectionView.dataSource = self collectionView.delegate = self collectionView.registerClass(UICollectionViewCell.self, forCellWithReuseIdentifier: "Cell") collectionView.backgroundColor = UIColor.whiteColor() self.view.addSubview(collectionView) // Do any additional setup after loading the view. }
Oh, I have changed it to what I think you mean? Thanks again
Yes, thats it. So, does it work now? Looks like it should
Are you using Interface Builder?
|

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.