如何在 swift 中使用文本字段文本“金额”向 tableview 添加额外的行
Posted
技术标签:
【中文标题】如何在 swift 中使用文本字段文本“金额”向 tableview 添加额外的行【英文标题】:How to add extra row to tableview with textfield text "Amount" in swift 【发布时间】:2019-11-22 13:10:49 【问题描述】:HomeVC 中的这个结构体:
struct JsonData
var name: String = ""
var categoryname: String = ""
var customerdetails: [cDetails] = [cDetails]()
init(name: String, categoryname: String, customerdetails: [cDetails])
self.name = name
self.categoryname = categoryname
self.customerdetails = customerdetails
struct cDetails
var dValue: String = ""
init(dValue: String)
self.dValue = dValue
在numberOfRowsInSection
中,如果 categoryname 是 Mobile,我需要 tableview 和 cellForRowAtindexPath 中的额外行,我需要它的文本单元格?.searchTextfield.text = "Amount"
像下面这样怎么做?
if section == 0
if categoryname == "Mobile"
//here i need extra row with cell?.searchTextfield.text = "Amount"
else
return selectedDetail?.customerdetails.count ?? 0
下面是当前视图控制器的代码,请在下面的代码中帮助我。
class NewSearchViewController: UIViewController, UITableViewDelegate, UITableViewDataSource, UITextFieldDelegate
@IBOutlet weak var tableView: UITableView!
var cell : DetailTableViewCell?
var selectedDetail: JsonData?
func numberOfSections(in tableView: UITableView) -> Int
return 2
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int
if section == 0
return selectedDetail?.customerdetails.count ?? 0
return 1
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell
if indexPath.section == 0
cell = tableView.dequeueReusableCell(withIdentifier: "textfieldCell", for: indexPath) as! DetailTableViewCell
cell?.searchTextfield.delegate = self
if let value = selectedDetail?.customerdetails[indexPath.row]
cell?.searchTextfield.text = value.dValue
else
cell?.searchTextfield.text = "missing data"
else if indexPath.section == 1
cell = tableView.dequeueReusableCell(withIdentifier: "buttonCell", for: indexPath) as! DetailTableViewCell
return cell!
请帮我写代码。
【问题讨论】:
【参考方案1】:试试这个
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int
if section == 0
if categoryname == "Mobile"
return selectedDetail?.customerdetails.count + 1 ?? 0
else
return selectedDetail?.customerdetails.count ?? 0
然后
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell
if indexPath.section == 0
cell = tableView.dequeueReusableCell(withIdentifier: "textfieldCell", for: indexPath) as! DetailTableViewCell
cell?.searchTextfield.delegate = self
//play with this validation
if selectedDetail?.customerdetails.count - 2 >= indexPath.row
if let value = selectedDetail?.customerdetails[indexPath.row]
cell?.searchTextfield.text = value.dValue
else
cell?.searchTextfield.text = "missing data"
else
cell?.searchTextfield.text = "Amount"
else if indexPath.section == 1
cell = tableView.dequeueReusableCell(withIdentifier: "buttonCell", for: indexPath) as! DetailTableViewCell
return cell!
【讨论】:
请在代码中提供帮助***.com/questions/59019652/…【参考方案2】:不知怎的,我无法添加评论,所以我会回复这个答案。
据我所知,您在 func numberOfSections(in tableView: UITableView)
中返回 2。
我认为您需要找到一种动态编程的方法。例如,如果您将所需的所有数据存储在一个数组中。你可以简单地返回arrayName.count
所以我认为你需要编写一个函数来将你需要的所有数据存储在一个数组中。并在您的 TableView 中返回它。
我希望我能很好地理解您的问题,并且这个答案是有道理的。
【讨论】:
以上是关于如何在 swift 中使用文本字段文本“金额”向 tableview 添加额外的行的主要内容,如果未能解决你的问题,请参考以下文章
如何在swift3 ios中使用键盘返回键将一个文本字段移动到另一个文本字段