2016-12-22 4 views
0

В настоящее время я работаю над приложением. Мне нужно создать смешанные статические и динамические строки в UIViewCollection. Мне нужно заполнить первую и вторую строки статическими UIImage и UILabel. Затем динамическое содержимое должно быть запущено из третьей строки. Как это сделать?Как создать смешанные статические и динамические строки в UICollectionView?

Я создаю это программно, используя Swift 3 без раскадровки.

My App

Любая помощь будет оценен по достоинству!

+0

Вы используете 'xib's'? Или все программно? – dirtydanee

+0

@dirtydanee, я не использую xib. да, все программно .. – user1994

ответ

0

Причина, по которой вы хотели бы использовать статические ячейки, заключается в том, что пользовательский интерфейс на этих ячейках будет всегда одним и тем же. Кроме того, вы не хотите, чтобы между ячейками не было разделителя.

Я бы предпочел разместить UIView над UICollectionView, чем введение статических ячеек для этой цели. Вы можете нарисовать UIView, чтобы имитировать внешний вид ячеек, что также решило бы проблему отсутствия разделителя между «статическими ячейками».

Другая причина, почему UIView будет лучшим подходом, потому что вы не испортите свой источник данных, особенно, когда дело доходит до IndexPath.

Последняя вещь, пользовательский интерфейс действительно выглядит как-то, что можно решить с помощью UITableView. Есть ли особая причина, почему вы используете UICollectionView?

EDIT: Если вы используете UITableView, вы можете просто присвоить этот вид на tableView «s tableHeaderView собственности в viewDidLayoutSubviews или в viewWillAppear.

Пример:

// 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 
+0

Я создал часть UIView с помощью XIB. Как вставить часть UIView в часть TableView или CollectionView? и, конечно, все эти части должны быть прокручиваемыми (вверх и вниз, как обычное табличное представление). Спасибо заранее – user1994

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 
     } 

Если вы usingTableview, сделать то же самое с Tableview в своих делегатов. Создание двух различных массивов для статического и динамического просты в обслуживании. Есть еще несколько методов, которые вы можете сделать, как:

  1. Добавить Статические данные Mutable массив, а затем добавить динамические данные в одном массиве. (простое решение, но вам нужно позаботиться о том, что данные не будут перемешаны или отредактированы. И снова вы хотели использовать этот изменяемый массив, используя removeAllObject, иначе у вас есть репликация данных.)

  2. Вы можете поддерживать словарь для ярлык и изображение и т. д. Его все о том, как вы понимаете проблему, свое требование и как вы управляете вещами.