? ? ? ?UICollectionViewDataSource中的方法有如下4個。
? ? ? ?collectionView:numberOfItemsInSection:。提供某個節中的列數目。
? ? ? ?numberOfSectionsInCollectionView:。提供視圖中節的個數。
? ? ? ?collectionView:cellForItemAtIndexPath:。為某個單元格提供顯示數據。
? ? ? ?collectionView:viewForSupplementaryElementOfKind:atIndexPath:。為補充視圖提供顯示數據。?
? ? ? ?下面南昌APP開發公司-百恒網絡就來為大家介紹一下在視圖控制器ViewController中實現數據源協議UICollectionViewDataSource和委托協議UICollectionViewDelegate的方法。
? ? ? ?在視圖控制器ViewController中實現數據源協議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:。選擇單元格之后觸發。?
? ? ? ?collectionView:didDeselectItemAtIndexPath:。不選擇單元格之后觸發。?
? ? ? ?在視圖控制器ViewController中實現委托協議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"]); ?
? ? ? ?}?
? ? ? ?運行上述代碼,得到的輸出結果如下:?
? ? ? ?select event name : basketball?
? ? ? ?select event name : athletics?
? ? ? ?select event name : archery
? ? ? ?關于在視圖控制器ViewController中實現數據源協議與委托協議的方法就先介紹到這里,如果還有哪些地方不太懂的,歡迎來電和我們聯系。此外,百恒網絡專業為您提供南昌APP開發,小程序開發,網站建設等服務,如有需要,歡迎大家來電咨詢,洽談合作!