2016-04-05 5 views
1

В моем представлении коллекции каждый раз, когда его прослушивается, получает один разный индекс. То код я осуществившие:UICollectionView получает неверный индекс

переопределение Func prepareForSegue (переход: UIStoryboardSegue, отправитель: AnyObject) {

if (segue.identifier == "projectsSegue") { 
    let indexPath = collectionView.indexPathForCell(sender as! MyCell) 
    let indexPathItem = indexPath?.item 


    let controller = (segue.destinationViewController) as! ProjectsByCodeViewController 


    controller.indexSelected = indexPathItem! 


} 

Я думаю, что все должно работает правильно, но это не так. Что мне нужно сделать? Мой массив имеет 4 элемента, а если im на последнем, он определяет как 3-й, а если im на 1-й, он определяет как 1-й, а не индекс 0. И если я начну с конца, он скажет индекс 1. Что случилось?

ответ

0

Ваше текстовое поле 3 кадра не должно использовать рамку ячейки y для ее положения, поскольку содержимое будет перекрываться и испортить ваш макет для других элементов. кадр Каждый пункт в клетке в отношении самой клетки, так что вы можете просто сделать текстовое поле начать 20px вниз от верхней части ячейки:

var titleField3 = UILabel(frame: CGRectMake(15, 20, cell.frame.width - 30, 70)) 

Надежда, что помогает

+0

Спасибо за вашу помощь, но он все еще делает то же самое. Если массив имеет 4 элемента, как только я получу третий, он начнет перекрывать содержимое (4-й элемент, отображаемый в представлении коллекции, перекрывается) Что еще я могу сделать? Добавить тег? Но как? – Sergio

+0

Возможно, projectImage должен быть фиксированной высотой, а не вычислением. Также попробуйте cell.clipsToBounds = true в вашем cellForRowAtIndex –

+0

Спасибо за ответ, но он все еще делает то же самое :( – Sergio