2014-11-26 19 views
6

Tôi đã tìm kiếm rất nhiều để tạo một UICollectionView theo chương trình nhưng không ai trong số họ đề xuất cách đơn giản nhất để sử dụng nó, cách thêm nhãn hoặc hình ảnh vào UICollectionViewCell. Hầu hết các trang web đề xuất rằng việc triển khai UICollectionView giống như UITableView, nhưng sự khác biệt lớn xảy ra khi chúng tôi cố thêm bất kỳ hình ảnh nào. Trong UITableView, chúng tôi có thể phân bổ imageViews theo phương thức cellForRow trong đó cell == nil và gán hình ảnh ở đâu (cell != nil). nhưng ở đây trong trường hợp phương pháp UICollectionView ItemAtIndexPath, không có điều kiện (cell == nil) như trong UITableView của CellForRow. Do đó, chúng tôi không thể phân bổ hiệu quả các biến số UImageView s hoặc Nhãn v.v. trong phương thức itemAtIndexPath. Tôi muốn biết liệu có bất kỳ thay thế nào khác ngoài phân lớp UICollectionViewCell và phân bổ các biến trong Lớp tùy chỉnh đó không? Bất kỳ ai có thể giúp đỡ, giúp đỡ bất kỳ được đánh giá cao.Cách tạo và sử dụng UIcollectionView theo chương trình?

+0

Có lẽ bài viết trên blog này và kho github tương ứng tôi đã làm giúp bạn: http://dasdev.de/2013/12/27/delegate-and-data- source-of-collection-views/ – dasdom

+0

ya ở một mức độ nào đó nhưng chúng tôi phải phân lớp NSObject trong liên kết mà bạn đề xuất. Vì vậy, để thêm một nhãn, không có đường nào khác ngoài phân lớp không cần thiết trong lớp uitableview. Dù sao cũng cảm ơn bạn. –

+0

http://stackoverflow.com/questions/17856055/creating-a-uicollectionview-programmatically –

Trả lời

3

Không có cách nào khác để tạo hoặc phân bổ ô trong phương thức itemAtIndex. Chúng ta cần phải đăng ký lớp tùy chỉnh để tạo ra bất kỳ khung nhìn nào bên trong lớp tùy chỉnh. một cái gì đó như thế này:

[UICollectionView registerClass:[CustomCollectionViewClass class] forCellWithReuseIdentifier:@"cellIdentifier"]; 

here là liên kết tốt nhất mà tôi thấy hữu ích. Hy vọng nó sẽ giúp những người khác

1

nhanh chóng:

override func viewDidLoad() { 
     super.viewDidLoad() 

     let layout: UICollectionViewFlowLayout = UICollectionViewFlowLayout() 
     layout.sectionInset = UIEdgeInsets(top: 20, left: 10, bottom: 10, right: 10) 
     layout.itemSize = CGSize(width: 70, height: 70) 

     let demoCollectionView:UICollectionView = UICollectionView(frame: self.view.frame, collectionViewLayout: layout) 
     demoCollectionView.dataSource = self 
     demoCollectionView.delegate = self 
     demoCollectionView.registerClass(UICollectionViewCell.self, forCellWithReuseIdentifier: "Cell") 
     demoCollectionView.backgroundColor = UIColor.whiteColor() 
     self.view.addSubview(demoCollectionView) 
    } 

    func collectionView(collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int { 
     return 27 
    } 

    func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell { 
     let cell = collectionView.dequeueReusableCellWithReuseIdentifier("Cell", forIndexPath: indexPath) 
     cell.backgroundColor = UIColor.lightGrayColor() 
     return cell 
    } 

    func collectionView(collectionView: UICollectionView, didSelectItemAtIndexPath indexPath: NSIndexPath) 
    { 
     print("User tapped on item \(indexPath.row)") 
    } 
Các vấn đề liên quan