2016-06-03 2 views
1

Я новичок в Swift и не имеют никакого опыта работы с Objective C. Я обычно реализовать пользовательский интерфейс Collection View, как это:Как вставить текстовое поле в коллекцию пользовательского интерфейса Просмотр ячеек и сохранение текста в массив?

class ViewController: UIViewController, UICollectionViewDataSource, UICollectionViewDelegate { 

let reuseIdentifier = "cell" 
var items = ["1", "2", "3" ... "100"] 


func collectionView(collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int { 
    return self.items.count 
} 

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

    let cell = collectionView.dequeueReusableCellWithReuseIdentifier(reuseIdentifier, forIndexPath: indexPath) as! MyCollectionViewCell 

    cell.myLabel.text = self.items[indexPath.item] 

    return cell 
} 


func collectionView(collectionView: UICollectionView, didSelectItemAtIndexPath indexPath: NSIndexPath) { 
    // handle tap events 
    print("You selected cell #\(indexPath.item)!") 
    } 
} 

Но я не имею ни малейшего представления о том, как иметь текстовое поле эти ячейки, а не числа из объявленного массива (элементы). И как я могу сохранить текст, введенный в массив?

P.S Я не отправляю это на ожидание кода (хотя это мне очень помогло), а скорее для некоторых рекомендаций или веб-ссылок о том, как это сделать.

ответ

1

Существует много способов сделать это. Простой способ может быть:

перетащить UITextView в свой UICollectionView прототип ячейки в раскадровку придать TextView ряд тегов, так что вы можете ссылаться на него в коде в функции `didSelectItemAtIndexPath, вам необходимо получить ссылку на клетка, как это:

let cell = collectionView.cellForItemAtIndexPath(indexPath) 

, то вы можете получить ссылку на UITextView по тэгу как этот

let textField = cell?.viewWtihTag(100) as? UITextField 

Теперь вы можете делать все, что вы хотите со значением. Проблема здесь в том, что пользователь нажимает на UITextField, он не будет запускать этот метод (хотя они могут редактировать текстовый экран). Если они вносят изменения и затем выходят за пределы textField, он вызывает этот метод, и вы увидите измененный текст. Вы можете обойти это, добавив флажок или что-то, чтобы пользователь мог принять их изменения. или что-то типа того.

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