我创建了动态表单,用户输入了表单数量,并且为此创建了表格单元格。提交所有表单后,所有详细信息都应以 excel 格式显示,因为我已经创建了 Collection View ,但问题是唯一选定的单元格值正在打印。
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 = "hone"
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
}
}
}
Best Answer-推荐答案 strong>
我对你的问题有个想法。
第 1 步:创建新结构以保存信息。
struct Information {
var name: String
var phone: String
var email: String
var gender: String
init(name: String, phone: String, email: String, gender: String) {
self.name = name
self.phone = phone
self.gender = gender
self.email = email
}
}
第 2 步:
在class tableViewController 中,新建变量:
var formData: [信息] = []
第 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] = []
第五步:为collectionView创建一个header:
|姓名 |电话 |电子邮件 |性别 |
第 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
...
}
我不知道为什么你需要很多提交按钮来创建许多 Controller ,但让我们试试我的想法。
关于ios - 如何在 Swift 3 中将数据从所有 TableView Cell 传递到 CollectionView,我们在Stack Overflow上找到一个类似的问题:
https://stackoverflow.com/questions/42663510/
|