2017-11-06 14 views
0

コレクションビューを使用してログイン/登録ページを作成しようとしています ユーザがログインセグメントコントロール を選択したときに上位4行を削除し、私はこれらの4行を再追加し、それに応じてコレクションビューのサイズを変更したいと思っています。 と私はまた、これらの行を追加 - 削除するときにユーザーが電子メールのテキストフィールドに入力したテキストを維持できるようにしたい。 Main Screenコレクションビューのトップローを表示/非表示

iはインデックスパスで、削除アイテムを使用しようとしましたが、再度トップ だから私は、代わりにセグメント制御値を削除するが、変更の真= .ishiddenを使用しようとした時にそれらを入力する方法を見つけ出すことができませんでしたテキストフィールド内に入力されたテキストを繰り返し、異なるセル内に配置します。たとえば、非表示のセルがあるログインページにあり、電子メールテキストフィールドに「Hello」と入力した場合は、「登録」をクリックし、フォームが表示され、「姓」テキストフィールドに「Hello」というテキストが表示され、私がログインと登録の間で切り替え続けるなら、テキストフィールド。

私はcollectionView高さの制約が一定の変更、およびcollectionView.contentInset.Topのためのマイナス値を設定することにより、以下の Login Screen のように見えるようにログイン画面を作るしようとしたとき、私が直面してる他の問題は、ある、それはありません私はそれが欲しいので表示されますが、一度登録を選択すると、完全なフォームがロードされず、このようになります。 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の初心者であり、コレクションビューを把握しようとすると、あなたの助けが高く評価されます。

答えて

0

私はその後、あなたの例のために、あなたのセグメント化された制御アクションであなただけのVARとして、それを宣言した後、あなたの配列を更新でき、AppleのドキュメントにUICollectionViewクラスをチェックすることをお勧め:

@objc func handleLoginRegisterChange() { 
    if LoginRegisterSegmentControl.selectedSegmentIndex == 0 {  
     signUpPlaceHolders = ["Email", "Password"] 
     collectionViewHeight.constant = 80 
    } else { 
     signUpPlaceHolders = ["First Name", "Last Name", "Company Name", "Phone", "Email", "Password"] 
     collectionViewHeight.constant = 240 
    } 
    collectionView.reloadData() 
} 
関連する問題