我创建了动态表单,用户输入表单数量,并为此创建了表格单元格。提交所有表格后,所有细节都应显示在excel formate中,因为我已经创建了集合视图,但问题是唯一选定的单元格值是打印。 我将它用于collectionView
tableViewController.swift
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
}
import UIKit
class tableViewController: UIViewController, UITableViewDataSource,UITableViewDelegate {
override func viewDidLoad() {
super.viewDidLoad()
}
@IBOutlet var tableView: UITableView!
@IBOutlet var nameText: UITextField!
var name: String = ""
var phone: String = ""
var email: String = ""
var gender: String = ""
var shop = Int()
var namevalue = String()
var phoneValue = String()
var emailValue = String()
var genderValue = String()
var formData: [Information] = []
public func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int
{
return shop
}
public func tableView(_ tableView: UITableView, titleForHeaderInSection section: Int) -> String? {
let shop1 = [shop]
return "Section \(shop1[section]))"
}
public func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell
{
let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath) as! myTableViewCell
if indexPath.section == 0{
if indexPath.row == 0{
print("THis is print 1",cell.emailText.text as Any)
}
}
name = cell.nameText.text!
phone = cell.phoneText.text!
email = cell.emailText.text!
gender = cell.genderText.text!
print("This is name",name)
let data = Information(name: name, phone: phone, email: email, gender: gender)
formData.append(data)
return cell
}
public func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
for _ in 0..<shop {
print("THis is print 3",shop)
}
let indexPath = tableView.indexPathForSelectedRow //optional, to get from any UIButton for example
let currentCell = tableView.cellForRow(at: indexPath!)! as! myTableViewCell
name = currentCell.nameText.text!
phone = currentCell.phoneText.text!
email = currentCell.emailText.text!
gender = currentCell.genderText.text!
print("Hello hello3",formData)
print("THis is print 4",currentCell.self.emailText.text as Any)
tableView.reloadData()
}
@IBAction func submitButton(_ sender: Any) {
tableView.reloadData()
print("THis is print 6",formData)
let mainController : CollectionViewController = CollectionViewController(nibName: "CollectionViewController", bundle: nil)
mainController.getShop = shop+1
mainController.formData = formData
// mainController.getPhone = phone
// mainController.getEmail = email
// mainController.getGender = gender
self.navigationController?.pushViewController(mainController, animated: true)}}
collectionViewController.swift
import UIKit
class CollectionViewController: UIViewController, UICollectionViewDataSource, UICollectionViewDelegate {
var formData: [Information] = []
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 {
for element in formData{
print("This is element",element.name)
}
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
}
else 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
}}}}
1.I输入我想要的表格编号
2。没有显示的表格,我为所有不同的表格输入了所有不同的值
3.但发生的事情只有一个表单细节正在打印
答案 0 :(得分:0)
您不应该在public func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell
因为当你向上/向下滚动时,这个func会一次又一次地调用。
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
cell.formNoLabel.text = j
for indexPath in 0..<shop{
print(String(indexPath))
}
if indexPath.section == 0{
if indexPath.row == 0{
print("THis is print 1",cell.emailText.text as Any)
}
}
var data : Information
if indexPath.row < formData.count {
data = formData[indexPath.row]
} else {
data = Information(name: name, phone: phone, email: email, gender: gender)
formData.append(data)
}
cell.data = data
print("THis is print 2",formData)
//cell.nameLabel.text = Array[indexPath.row]
// cell.nameText.text = Array[indexPath.row]
return cell
}
在myTableViewCell
课程中,您应该更改为
class myTableViewCell: UITableViewCell, UITextFieldDelegate {
@IBOutlet var nameLabel: UILabel!
@IBOutlet var nameText: UITextField!
@IBOutlet var phoneText: UITextField!
@IBOutlet var emailText: UITextField!
@IBOutlet var genderText: UITextField!
@IBOutlet var formNoLabel: UILabel!
var data: Information! {
didSet {
nameText.text = data.name
phoneText.text = data.phone
emailText.text = data.email
genderText.text = data.gender
}
}
override func awakeFromNib() {
super.awakeFromNib()
// Initialization code
nameText.delegate = self
phoneText.delegate = self
emailText.delegate = self
genderText.delegate = self
}
override func setSelected(_ selected: Bool, animated: Bool) {
super.setSelected(selected, animated: animated)
// Configure the view for the selected state
}
public func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
// let indexPath = tableView.indexPathForSelectedRow //optional, to get from any UIButton for example
let currentCell = tableView.cellForRow(at: indexPath)! as UITableViewCell
print(currentCell.textLabel!.text!)
}
func textFieldDidEndEditing(_ textField: UITextField) {
let text = textField.text!
if textField === nameText {
data.name = text
} else if textField === phoneText {
data.phone = text
} else if textField === emailText {
data.email = text
} else if textField === genderText {
data.gender = text
}
}
}
请记住将struct Information
更改为class Information