如何在 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中使用键盘返回键将一个文本字段移动到另一个文本字段

当文本与文本字段大小相同时,如何停止在文本字段中输入字符?

如何右对齐和格式化输入到 Strut2 文本字段中的金额?

如何在 iOS swift 中使用文本字段过滤日期数组?

如何在 Swift 中使用色调和一些文本向 UIImageView 添加叠加层?

有没有一种方法可以使用 swift 在 alertview 内的文本字段中提供验证