2016-02-09 3 views
-1

У меня есть UICollectionView с пользовательскими ячейками. Все работает правильно, но то, что я не знаю, как это сделать, - это назначить другой текст ярлыкам в каждой ячейке. У меня есть один раздел и три элемента в каждом разделе. Я хочу, чтобы все три элемента имели одинаковый макет. Я думаю, что мне нужно назначить другой идентификатор для каждой ячейки, но я не уверен, как я устанавливаю другой текст для более чем одного идентификатора ячейки.Назначить различный текст ярлыкам в нескольких ячейках UICollectionView

Любая помощь приветствуется, спасибо.

let reuseIdentifier = "directionCell" 

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

    return 1 
} 


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

    return 3 
} 

override func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell { 
    let cell = collectionView.dequeueReusableCellWithReuseIdentifier(reuseIdentifier, forIndexPath: indexPath) as! CustomCollectionViewCell 
    cell.titleLabel.text = "Current title" 
    cell.subtitleLabel.text = "Choose to start" 
    cell.layer.cornerRadius = 10 




    return cell 
+1

показать нам свой исходный код. –

+0

Я отредактировал с помощью источника. Это обычный код шаблона, о котором я упомянул, поскольку я не уверен, как обрабатывать назначение текста более чем одной ячейке. – ACerts

+0

Просто установите текст, используя что-то, что может принимать индекс (например, массив), используя 'indexPath', как способ выбора правильного текста. Это основной материал - я рекомендую вам следовать учебному курсу на iTunesU, если вы новичок в Cocoa Touch и iOS. –

ответ

1

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

var titles: [String] = ["Title1", "Title2", "Title3"] 


override func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell 
{ 
    let cell = collectionView.dequeueReusableCellWithReuseIdentifier(reuseIdentifier, forIndexPath: indexPath) as! CustomCollectionViewCell 
    cell.titleLabel.text = self.titles[indexPath.row] 
    cell.subtitleLabel.text = "Choose to start" 
    cell.layer.cornerRadius = 10 

    return cell 
} 
+1

Спасибо за ответы, Кристиан. Очень признателен. – ACerts

+0

Я думаю, что с помощью представлений коллекции вы используете ** путь ** указателя и раздел (** не ** _row_ и раздел). –

1

Если у вас есть 3 клетки и 3 клетки имеет разное содержание, просто создать 3 collectionviewcels и подключить IB розетки, а затем под названием темы, как это: -

func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell { 
    var cell: UICollectionViewCell! 
    let reuseIdentifier = "CustomCollectionViewCell" 
    let cell1 = collectionView.dequeueReusableCellWithReuseIdentifier(reuseIdentifier, forIndexPath: indexPath) as! CustomCollectionViewCell 
    if indexPath.row == 0 { 
     cell1.titleLabel.text = "Current title" 
     cell1.subtitleLabel.text = "Choose to start" 
     cell1.layer.cornerRadius = 10 
     cell = cell1 
    } else if indexPath.row == 1 { 
     cell2.titleLabel.text = "Current title" 
     cell2.subtitleLabel.text = "Choose to start" 
     cell2.layer.cornerRadius = 10 
     cell = cell2 
    } else { 
     cell3.titleLabel.text = "Current title" 
     cell3.subtitleLabel.text = "Choose to start" 
     cell3.layer.cornerRadius = 10 
     cell = cell3 
    } 

    return cell 
} 
Смежные вопросы