Показать / скрыть верхние строки в представлении коллекции

Hend спросил: 13 октября 2017 в 07:33 в: ios

Я пытаюсь создать страницу входа в систему / регистрации, используя представление коллекции. Я хочу иметь возможность удалить 4 верхние строки и уменьшить представление коллекции, когда пользователь выбирает элемент управления сегментом входа, и я хочу повторно добавить эти 4 строки и повторно соответственно измените размер представления коллекции. И я также хочу сохранить текст, который пользователь ввел в текстовое поле электронной почты при добавлении-удалении этих строк. Главный экран

я пытался использовать элементы удаления по пути индекса , но не смог понять, как их вводить сверху. Так что я попытался использовать .ishidden = true вместо удаления, но неоднократное изменение контрольного значения сегмента приводит к тому, что текст, введенный в текстовое поле, помещается в разные ячейки. Например, если я нахожусь на странице входа в систему со скрытыми ячейками и набираю "Hello" в текстовом поле электронной почты, я нажимаю "Регистрация", отображается полная форма, а "Hello" - это текст в текстовом поле "Фамилия", и он продолжает появляться в разных textfield, если я продолжаю переключаться между входом в систему и регистрацией.

Другая проблема, с которой я сталкиваюсь, - это когда я пытаюсь сделать экран входа в систему похожим на приведенный ниже. Экран входа в систему путем изменения константы ограничения высоты collectionView и установки минус значение для collectionView.contentInset.Top, оно выглядит так, как я хочу, но как только я выбираю регистр, он не загружает полную форму, и вот так он выглядит.partial register

Мой код для изменения элемента управления сегмента выглядит следующим образом:

@objc func handleLoginRegisterChange() {
        if LoginRegisterSegmentControl.selectedSegmentIndex == 0 {
            LoginRegisterButton.setTitle("Login", for: .normal)
            //collectionView.reloadData()
            collectionView.cellForItem(at: IndexPath(item: 0, section: 0))?.isHidden = true
            collectionView.cellForItem(at: IndexPath(item: 1, section: 0))?.isHidden = true
            collectionView.cellForItem(at: IndexPath(item: 2, section: 0))?.isHidden = true
            collectionView.cellForItem(at: IndexPath(item: 3, section: 0))?.isHidden = true
            collectionView.contentInset.top = -160.6
            collectionViewHeight.constant = 80
        }
        else if LoginRegisterSegmentControl.selectedSegmentIndex == 1 {
            LoginRegisterButton.setTitle("Register", for: .normal)
            collectionView.cellForItem(at: IndexPath(item: 0, section: 0))?.isHidden = false
            collectionView.cellForItem(at: IndexPath(item: 1, section: 0))?.isHidden = false
            collectionView.cellForItem(at: IndexPath(item: 2, section: 0))?.isHidden = false
            collectionView.cellForItem(at: IndexPath(item: 3, section: 0))?.isHidden = false
            collectionView.reloadData()
            collectionView.contentInset.top = 0
            collectionViewHeight.constant = 240
        }
    }

Мой customCell имеет только текстовое поле

, так я настраиваю заполнители

func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
    let customCell = collectionView.dequeueReusableCell(withReuseIdentifier: customeCellIdentifier, for: indexPath) as! CustomCell
    customCell.textField.placeholder = signUpPlaceHolders[indexPath.row]
    return customCell
}

и массив signUpPlaceHolder:

let signUpPlaceHolders = ["First Name", "Last Name", "Company Name", "Phone", "Email", "Password"]

я новичок в Swift и пытаюсь выяснить коллекцию Views, ваша помощь будет высоко оценена .

0 ответов