0

我目前正在开发一个应用程序。我需要在 UIViewCollection 中创建混合的静态和动态行。我需要用静态 UIImage 和 UILabel 填充第一行和第二行。然后动态内容应该从第 3 行开始。怎么做?

我正在使用没有 Storyboard 的 Swift 3 以编程方式创建这个。

我的应用

任何帮助,将不胜感激!

4

2 回答 2

0

试试下面的代码行:

 override func numberOfSectionsInCollectionView(collectionView: UICollectionView) -> Int {
      return 1
    }

    override func collectionView(collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {

    //assuming, arrLabelDynamic.count = arrImageDynamic.count and arrLabelStatic.count = arrImageStatic.count

        return arrImageDynamic.count + arrImageStatic.count
    }
    func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath:NSIndexPath)->UICollectionViewCell
        {
           var  cell = collectionView.dequeueReusableCellWithReuseIdentifier("CELL", forIndexPath: indexPath) as CollectionCell

        // if my cell is 3rd or greater then 3.
            if ( indexPath.row > 1 )    {
            cell.imageView.image = [UIImage imageNamed: arrImageDynamic[indexPath.row - 2]] ;
            cell.myLabel.text= [UIImage imageNamed: arrLabelDynamic[indexPath.row - 2]] ;
             }
       //if cell is first and second.
        else{
            cell.imageView.image = [UIImage imageNamed: arrImageStatic[indexPath.row ]] ;
            cell.myLabel.text= [UIImage imageNamed: arrLabelStatic[indexPath.row]] ;
             }
         return cell
        }

如果您使用的是 Tableview,请在其代表中对 tableview 执行相同操作。为静态和动态制作两个不同的数组很容易维护。您可以使用更多几种方法,例如:

  1. 添加静态数据是可变数组,然后将动态数据添加到同一个数组中。(最简单的解决方案,但是您必须注意数据不会随机播放或编辑的数组。再次,您想使用这些可变数组removeAllObject,否则您将复制数据。)

  2. 您可以维护标签和图像的字典,等等。这一切都与您如何理解问题,您的需求以及您如何管理事物有关。

于 2016-12-23T05:55:24.057 回答
0

您之所以要使用静态单元格,是因为这些单元格上的用户界面将始终相同。此外,您希望在单元格之间没有分隔符。

我宁愿建议将其放置UIViewUICollectionView, 而不是为此目的引入静态单元格。您可以绘制UIView模仿单元格的外观,这也可以解决“静态单元格”之间没有分隔符的问题。

另一个原因,为什么 aUIView会是一个更好的方法,因为你不会弄乱你的数据源,尤其是当涉及到IndexPath's.

最后一件事,UI 看起来真的很像,可以用UITableView. 有什么特别的原因,你为什么要使用UICollectionView

编辑: 如果您正在使用UITableView,您可以将此视图分配给in或 intableViewtableHeaderView属性。viewDidLayoutSubviewsviewWillAppear

例子:

// Create headerView from Nib 
// Make sure you override the init() function, so it will read it from xib
let headerView = YourHeaderView()

// Set the width to be equal to your tableView's width, and set the height according to how height it is in your xib files
headerView.frame =  CGRect(x: 0, y: 0, width: self.tableView.frame.width, height: 200)

// UITableView has a tableViewHeader property. just assign the view to it
self.tableView.tableViewHeader = headerView
于 2016-12-22T16:14:15.747 回答