2017-03-08 58 views
2

我已经创建了动态表单,用户输入了多个表单,并为此创建了表格单元格。提交所有表单后,所有细节都应显示在excel formate中,因为我已创建集合视图,但问题是唯一选中的单元格值正在打印。如何将数据从所有TableViewCell传递到Swift3中的CollectionView

class tableViewController: UIViewController, UITableViewDataSource,UITableViewDelegate { 

    @IBOutlet var nameText: UITextField! 
    @IBOutlet var tableView: UITableView! 

    var shop = Int() 
    var namevalue = [String]() 
    var phoneValue = String() 
    var emailValue = String() 
    var genderValue = String() 
    var isSelectAll = false; 
    public func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int 

    { 
     return shop 
    } 


    public func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell 

    { 

     let k = indexPath.row+1 
     let j:String? = String(k) 

     let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath) as! myTableViewCell 

     if(isSelectAll==true) 
     { 
      cell.backgroundColor = UIColor.blue; 
     } 
     else 
     { 
      cell.backgroundColor = UIColor.white; 
     } 
     cell.formNoLabel.text = j 

     for _ in 0..<shop{ 

     print(cell.nameLabel.text as Any) 
     } 

     if indexPath.section == 0{ 
      if indexPath.row == 0{ 
       print(cell.emailText.text as Any) 

      } 
     } 

     for shop in 0..<(indexPath.count){ 

      let thisPath = indexPath[shop] 
      print(thisPath as Any) 
     } 

       return cell 
    }  public func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { 



    let indexPath = tableView.indexPathForSelectedRow //optional, to get from any UIButton for example 
    for _ in 0..<shop { 

     let currentCell = tableView.cellForRow(at: indexPath!)! as! myTableViewCell 
     print(currentCell.self.nameText.text as Any) 


    } 
     let currentCell = tableView.cellForRow(at: indexPath!)! as! myTableViewCell 
     print(currentCell.self.emailText.text as Any) 
    namevalue.append(currentCell.nameText.text!) 
     // namevalue = [currentCell.nameText.text!] 
     phoneValue = currentCell.phoneText.text! 
     emailValue = currentCell.emailText.text! 
     genderValue = currentCell.genderText.text! 


     @IBAction func submitButton(_ sender: Any) { 
      let mainController : CollectionViewController = CollectionViewController(nibName: "CollectionViewController", bundle: nil) 
     mainController.getShop = shop+1 
     mainController.getName = namevalue 
     mainController.getPhone = phoneValue 
     mainController.getEmail = emailValue 
     mainController.getGender = genderValue 

      self.navigationController?.pushViewController(mainController, animated: true) 
     // self.present(mainController, animated: true, completion: nil) 


    } 

    @IBAction func Select(_ sender: Any) { 
     isSelectAll = true;//on button action 
     print(namevalue) 
     self.tableView.reloadData()//on button action 
    } 
} 

class CollectionViewController: UIViewController, UICollectionViewDataSource, UICollectionViewDelegate** 

    let dateCellIdentifier = "DateCellIdentifier" 
    let contentCellIdentifier = "ContentCellIdentifier" 
    @IBOutlet weak var collectionView: UICollectionView! 
    var getShop = Int() 
    var getName = String() 
    var getPhone = String() 
    var getEmail = String() 
    var getGender = String() 

    override func viewDidLoad() { 
     super.viewDidLoad() 

     self.collectionView .register(UINib(nibName: "DateCollectionViewCell", bundle: nil), forCellWithReuseIdentifier: dateCellIdentifier) 
     self.collectionView .register(UINib(nibName: "ContentCollectionViewCell", bundle: nil), forCellWithReuseIdentifier: contentCellIdentifier) 
    } 


    // MARK - UICollectionViewDataSource 

    func numberOfSections(in collectionView: UICollectionView) -> Int { 
     return getShop 
    } 


    func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int { 
     return 5 
    } 


    func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell { 

     if indexPath.section == 0 { 
      if indexPath.row == 0 { 
       let dateCell : DateCollectionViewCell = collectionView .dequeueReusableCell(withReuseIdentifier: dateCellIdentifier, for: indexPath) as! DateCollectionViewCell 
       dateCell.backgroundColor = UIColor.white 
       dateCell.dateLabel.font = UIFont.systemFont(ofSize: 13) 
       dateCell.dateLabel.textColor = UIColor.black 
       dateCell.dateLabel.text = "Number" 

       return dateCell 
      } 
      if indexPath.row == 1 { 
       let dateCell : DateCollectionViewCell = collectionView .dequeueReusableCell(withReuseIdentifier: dateCellIdentifier, for: indexPath) as! DateCollectionViewCell 
       dateCell.backgroundColor = UIColor.white 
       dateCell.dateLabel.font = UIFont.systemFont(ofSize: 13) 
       dateCell.dateLabel.textColor = UIColor.black 
       dateCell.dateLabel.text = "Name" 

       return dateCell 
      } 
      if indexPath.row == 2 { 
       let dateCell : DateCollectionViewCell = collectionView .dequeueReusableCell(withReuseIdentifier: dateCellIdentifier, for: indexPath) as! DateCollectionViewCell 
       dateCell.backgroundColor = UIColor.white 
       dateCell.dateLabel.font = UIFont.systemFont(ofSize: 13) 
       dateCell.dateLabel.textColor = UIColor.black 
       dateCell.dateLabel.text = "Phone" 

       return dateCell 
      } 
      if indexPath.row == 3 { 
       let dateCell : DateCollectionViewCell = collectionView .dequeueReusableCell(withReuseIdentifier: dateCellIdentifier, for: indexPath) as! DateCollectionViewCell 
       dateCell.backgroundColor = UIColor.white 
       dateCell.dateLabel.font = UIFont.systemFont(ofSize: 13) 
       dateCell.dateLabel.textColor = UIColor.black 
       dateCell.dateLabel.text = "Email" 

       return dateCell 
      }else { 
       let contentCell : ContentCollectionViewCell = collectionView .dequeueReusableCell(withReuseIdentifier: contentCellIdentifier, for: indexPath) as! ContentCollectionViewCell 
       contentCell.contentLabel.font = UIFont.systemFont(ofSize: 13) 
       contentCell.contentLabel.textColor = UIColor.black 
       contentCell.contentLabel.text = "Gender" 

       if indexPath.section % 2 != 0 { 
        contentCell.backgroundColor = UIColor(white: 242/255.0, alpha: 1.0) 
       } else { 
        contentCell.backgroundColor = UIColor.white 
       } 

       return contentCell 
      } 
     } else { 
      if indexPath.row == 0 { 
       let dateCell : DateCollectionViewCell = collectionView .dequeueReusableCell(withReuseIdentifier: dateCellIdentifier, for: indexPath) as! DateCollectionViewCell 
       dateCell.dateLabel.font = UIFont.systemFont(ofSize: 13) 
       dateCell.dateLabel.textColor = UIColor.black 
       dateCell.dateLabel.text = String(indexPath.section) 
       if indexPath.section % 2 != 0 { 
        dateCell.backgroundColor = UIColor(white: 242/255.0, alpha: 1.0) 
       } else { 
        dateCell.backgroundColor = UIColor.white 
       } 

       return dateCell 
      } 
       if indexPath.row == 1 
       { 
        let contentCell : ContentCollectionViewCell = collectionView .dequeueReusableCell(withReuseIdentifier: contentCellIdentifier, for: indexPath) as! ContentCollectionViewCell 
        contentCell.contentLabel.font = UIFont.systemFont(ofSize: 13) 
        contentCell.contentLabel.textColor = UIColor.black 
        contentCell.contentLabel.text = getName 
        if indexPath.section % 2 != 0 { 
         contentCell.backgroundColor = UIColor(white: 242/255.0, alpha: 1.0) 
        } else { 
         contentCell.backgroundColor = UIColor.white 
        } 

        return contentCell 
       } 

      else if indexPath.row == 2 
      { 
       let contentCell : ContentCollectionViewCell = collectionView .dequeueReusableCell(withReuseIdentifier: contentCellIdentifier, for: indexPath) as! ContentCollectionViewCell 
       contentCell.contentLabel.font = UIFont.systemFont(ofSize: 13) 
       contentCell.contentLabel.textColor = UIColor.black 
       contentCell.contentLabel.text = getPhone 
       if indexPath.section % 2 != 0 { 
        contentCell.backgroundColor = UIColor(white: 242/255.0, alpha: 1.0) 
       } else { 
        contentCell.backgroundColor = UIColor.white 
       } 

       return contentCell 
      } 
      else if indexPath.row == 3 
      { 
       let contentCell : ContentCollectionViewCell = collectionView .dequeueReusableCell(withReuseIdentifier: contentCellIdentifier, for: indexPath) as! ContentCollectionViewCell 
       contentCell.contentLabel.font = UIFont.systemFont(ofSize: 13) 
       contentCell.contentLabel.textColor = UIColor.black 
       contentCell.contentLabel.text = getEmail 
       if indexPath.section % 2 != 0 { 
        contentCell.backgroundColor = UIColor(white: 242/255.0, alpha: 1.0) 
       } else { 
        contentCell.backgroundColor = UIColor.white 
       } 

       return contentCell 
      } 
         else { 
       let contentCell : ContentCollectionViewCell = collectionView .dequeueReusableCell(withReuseIdentifier: contentCellIdentifier, for: indexPath) as! ContentCollectionViewCell 
       contentCell.contentLabel.font = UIFont.systemFont(ofSize: 13) 
       contentCell.contentLabel.textColor = UIColor.black 
       contentCell.contentLabel.text = getGender 
       if indexPath.section % 2 != 0 { 
        contentCell.backgroundColor = UIColor(white: 242/255.0, alpha: 1.0) 
       } else { 
        contentCell.backgroundColor = UIColor.white 
       } 

       return contentCell 
      } 
     } 
    } 
+0

说真的。你应该保持你的代码清洁。 – javimuu

+0

@javimuu我认识的人!因为我有很多方法可以解决这个问题。你能帮我吗?我可以寄给你所有的代码。 – ViralRathod

回答

0

我对你的问题的想法。

步骤1:创建新的结构来保存信息。

​​

步骤2: 在class tableViewController,创建新的变量:

var formData: [Information] = []

步骤3:每次用户在的tableView在细胞进入一种形式:

let name = cell.nameText.text! 
let phone = cell.phoneText.text! 
let email = cell.emailText.text! 
let gender = cell.genderText.text! 

data = Information(name: name, phone: phone, email: email, gender: gender) 

formData.append(data) 

步骤4:在类CollectionViewController,声明新的变量:

var formData: [Information] = [] 

步骤5:为的CollectionView创建标题:

|名称|电话|电子邮件|性别|

步骤6:在的CollectionView每个小区:

| formData [indexPath] .name | formData [indexPath] .name | formData [indexPath] .name | formData [indexPath] .name |

步骤7

@IBAction func submitButton(_ sender: Any) { 
    mainController.formData = formData. 
    // do somethings 
... 
} 

我不知道为什么你需要大量的提交按钮创建多个控制器,但让尝试我的想法。

+0

感谢您的帮助thx。我在tableView控制器中创建了第二个按钮,用于选择所有行 – ViralRathod

+0

我可以收到您的电子邮件,因此我向您发送所有代码,然后您可以得到确切的问题? – ViralRathod