2016-04-15 3 views
0

Может ли кто-нибудь помочь в использовании текстового поля внутри UiCollectionView. То, что я пытаюсь выполнить, - это представление коллекции, которое содержит изображения для публикации пользователем. С этими изображениями я хотел бы дать им возможность подписать каждое отдельное изображение. Проблема, с которой я столкнулась, что я уверен в том, что у меня есть другие, есть это; как только пользователь вводит текстовое поле, вход автоматически заполняет текстовое поле позже.Текстовое поле внутри UICollectionViewCell Повторное использование текста

Пример: 5 изображений с текстовыми полями.

Изображение 1 по пользователь надписи «привет»

Изображение 2 в пользовательских типов заголовка 3 Scandinavia типов пользовательских титров

Image «там», «как ты»

Перед типами пользователей в текстовом поле для изображения 4 он будет читать «Привет»

Я нашел одно сообщение в стеке, чтобы быть полезным, но я до сих пор не понимаю, что я должен делать. Я следовал предложенным шагам; 1. создание массива для хранения входов текстового представления 2. В методе textFieldDidEndEditing добавление текущих текстовых полей, вводимых в массив, если оно не пустое. Где я запутался, это шаг 3, @bhanu предлагает «значение текстового поля, которое должно вводиться из массива, и это не приведет к неправильному значению».

ответ

0

Если вам удалось сохранить массив входов текстового поля, вы на самом деле на полпути. Но до сих пор не хватает логики, чтобы убедиться, что ваше текстовое поле отображает правильные значения, а не переработанный текст. Вам также нужно будет сохранить их NSIndexPath. В противном случае, как вы узнаете, к какой ячейке принадлежит вход текстового поля?

var textInputs = [String]() 
var textFieldIndexPath = [NSIndexPath]() 

func textFieldDidEndEditing(textField: UITextField) { 

// store the textfield.text into "textInput" array 
// you might need to find a way to store NSIndexPath of the selected cell // into "textFieldIndexPath" array here. From the textField instance, you should be able to trace the NSIndexPath of the cell it belongs to 

} 

Тогда в cellForItemAtIndexPath:

func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell { 

let cell = collectionView.dequeueReusableCellWithReuseIdentifier("CollViewCellIdentifier", forIndexPath: indexPath) as! UICollectionViewCell 

if textFieldIndexPath.contains(indexPath){ 
    cell.textField.text = textInput[indexPath.row] 
} 
} 

Имейте в виду, что то, что я написал только приблизительным ориентиром о том, как решить вопрос. В конечном счете, вы должны уточнить этот набор кодов, поскольку он является жестким и может быть подвержен ошибкам/лазейкам. Но я надеюсь, что это дало вам представление о том, как обойти это.

Я бы предложил использовать массив Tuples вместо того, чтобы поддерживать два массива, но для обеспечения большей гибкости.

+0

Большое вам спасибо за это! Это выглядит намного чище, чем логика, которую я использовал. Мое решение закончилось тем, что я использовал словарь – Mar

+0

Рад, что я смог помочь. Мой кодовый набор является грубым и может привести к некоторым ошибкам, поскольку он сильно зависит от того, как оба массива находятся в синхронизации. Поэтому было бы лучше, если бы вы могли просто взять некоторые подсказки из него и усовершенствовать его с помощью чего-то более чистого, как я уже сказал, массива кортежей, или если вы можете работать со словарями, тоже было бы хорошо – rach

Смежные вопросы