? ? ? ?UICollectionViewDataSource中的方法有如下4個。
? ? ? ?collectionView:numberOfItemsInSection:。提供某個節(jié)中的列數(shù)目。
? ? ? ?numberOfSectionsInCollectionView:。提供視圖中節(jié)的個數(shù)。
? ? ? ?collectionView:cellForItemAtIndexPath:。為某個單元格提供顯示數(shù)據(jù)。
? ? ? ?collectionView:viewForSupplementaryElementOfKind:atIndexPath:。為補充視圖提供顯示數(shù)據(jù)。?
? ? ? ?下面南昌APP開發(fā)公司-百恒網(wǎng)絡(luò)就來為大家介紹一下在視圖控制器ViewController中實現(xiàn)數(shù)據(jù)源協(xié)議UICollectionViewDataSource和委托協(xié)議UICollectionViewDelegate的方法。
? ? ? ?在視圖控制器ViewController中實現(xiàn)數(shù)據(jù)源協(xié)議UICollectionViewDataSource的代碼如下:?
? ? ? ?override func numberOfSectionsInCollectionView(collectionView: ? ? UICollectionView) -> Int { ? ??
? ? ? ?return self.events.count / 2?
? ? ? ?} ?
? ? ? ?override func collectionView(collectionView: UICollectionView, ? ? numberOfItemsInSection section: Int) -> Int { ? ??
? ? ? ?return 2?
? ? ? ?} ?
? ? ? ?override func collectionView(collectionView: UICollectionView,cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell { ? ?
? ? ? ?var cell = collectionView.dequeueReusableCellWithReuseIdentifier("Cell",forIndexPath: indexPath) as Cell?
? ? ? ?let event = self.events[indexPath.section*2 + indexPath.row] as NSDictionary ? ?cell.label.text = event["name"] as? String ? ??
? ? ? ?let imageFile = event["image"] as String ? ??
? ? ? ?cell.imageView.image = UIImage(named: imageFile) ? ??
? ? ? ?return cell?
? ? ? ?}?
? ? ? ?- (NSInteger)numberOfSectionsInCollectionView:(UICollectionView ? ? *)collectionView?
? ? ? ?{ ? ??
? ? ? ?return [self.events count] / 2;?
? ? ? ?}?
? ? ? ?- (NSInteger)collectionView:(UICollectionView *)collectionView ? ? ?numberOfItemsInSection:(NSInteger)section?
? ? ? ?{ ? ??
? ? ? ?return 2;?
? ? ? ?}?
? ? ? ?- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView ? ? cellForItemAtIndexPath:(NSIndexPath *)indexPath?
? ? ? ?{ ? ??
? ? ? ?Cell *cell = [collectionView ? ? ? ??
? ? ? ?dequeueReusableCellWithReuseIdentifier:@"Cell" forIndexPath:indexPath];
? ? ? ?NSDictionary *event = [self.events objectAtIndex:(indexPath.section*2 + indexPath.row)]; ? ??
? ? ? ?cell.label.text = [event objectForKey:@"name"]; ? ??
? ? ? ?cell.imageView.image = [UIImage imageNamed:[event objectForKey:@"image"]]; ? ?return cell;?
? ? ? ?}?
? ? ? ?UICollectionViewDelegate中的方法很多,這里我們選擇幾個較為重要的加以介紹。?
? ? ? ?collectionView:didSelectItemAtIndexPath:。選擇單元格之后觸發(fā)。?
? ? ? ?collectionView:didDeselectItemAtIndexPath:。不選擇單元格之后觸發(fā)。?
? ? ? ?在視圖控制器ViewController中實現(xiàn)委托協(xié)議UICollectionViewDelegate的代碼如下:?
? ? ? ?override func collectionView(collectionView: UICollectionView, ? ? ?didSelectItemAtIndexPath indexPath: NSIndexPath) { ? ??
? ? ? ?let event = self.events[indexPath.section*2 + indexPath.row] as NSDictionary ? ?NSLog("select event name : %@", event["name"] as String)?
? ? ? ?}
? ? ? ?- (void)collectionView:(UICollectionView *)collectionView ? ? ?
? ? ? ?didSelectItemAtIndexPath:(NSIndexPath *)indexPath?
? ? ? { ? ??? ? ? ?NSDictionary *event = [self.events objectAtIndex:(indexPath.section*2 + indexPath.row)]; ? ??
? ? ? ?NSLog(@"select event name : %@", [event objectForKey:@"name"]); ?
? ? ? ?}?
? ? ? ?運行上述代碼,得到的輸出結(jié)果如下:?
? ? ? ?select event name : basketball?
? ? ? ?select event name : athletics?
? ? ? ?select event name : archery
? ? ? ?關(guān)于在視圖控制器ViewController中實現(xiàn)數(shù)據(jù)源協(xié)議與委托協(xié)議的方法就先介紹到這里,如果還有哪些地方不太懂的,歡迎來電和我們聯(lián)系。此外,百恒網(wǎng)絡(luò)專業(yè)為您提供南昌APP開發(fā),小程序開發(fā),網(wǎng)站建設(shè)等服務(wù),如有需要,歡迎大家來電咨詢,洽談合作!