单击按钮,将UITextField添加到UITableView

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了单击按钮,将UITextField添加到UITableView相关的知识,希望对你有一定的参考价值。

经过相当长的一段时间阅读网络后,我决定来这里,因为我通常会在Stack Overflow上超级快速地回答我的问题!

我试图完成以下内容,并将感谢任何正确方向的建议或指示:

  • 显示UITableView
  • 按下“+”按钮时,UITextField将添加到UITableView的一行
  • 用户可以在此字段中键入字符串
  • 如果用户再次选择“+”按钮,则将另一个UITextfield添加到下一行。 (你明白了)
  • 当用户完成添加UITextField并将其填入后,可以点击“保存”按钮,此时每行中的所有条目都保存到数组中。

任何有关这方面的建议将不胜感激

谢谢!

汤姆

答案

这个伪代码可能是一个起点:

// define an NSMutableArray called fields

- (IBAction)addField:(id)sender {
    // create a new text field here and add it to the array
    // then reload data
}

- (IBAction)save:(id)sender {
    for(UITextField *textField in fields) {
        // whatever you have to do
    }
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
    // you have as many rows as textfields
    return [fields count];
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    static NSString *CellIdentifier = @"Cell";

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
        cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
    }
    // Set up the cell...
    // For row N, you add the textfield N to the array.
    [cell addSubview:(UITextField *)[fields objectAtIndex:indexPath.row]];
}
另一答案

SWIFT更新4

您可以在此处使用beginUpdate和endUpdate,而不是重新加载整个表。

将目标添加到单元格按钮(您可以使用视图标记或创建新的TableviewCell类)。

    cell.addBtn.tag = indexPath.row
    cell.addBtn.addTarget(self, action: #selector(self.addTextField(_:)), for: UIControlEvents.touchUpInside)
    cell.txtField.tag = indexPath.row

然后实现此方法:

@objc func addTextField(_ sender:UIButton) {

    let indexPath = IndexPath(row: sender.tag, section: 0)

    if let cell = tblView.cellForRow(at: indexPath) as? TableCell {
        tblArray.append(cell.txtField.text!)
    }

    let newRow = IndexPath(row: sender.tag + 1, section: 0)
    tblView.beginUpdates()
    tblView.insertRows(at: [newRow], with: .left) 
    tblView.endUpdates()
}

别忘了在开始时加上var tblArray:[Any] = [""]

希望这个正在寻找Swift的人回答。

快乐的编码。

以上是关于单击按钮,将UITextField添加到UITableView的主要内容,如果未能解决你的问题,请参考以下文章

以编程方式添加带有约束的 UITextField

单个 UITextField 中的多种字体

让按钮快速将文本添加到 UITextField

将“清除”按钮添加到 iPhone UITextField

哪个 UITextField 委托方法将被调用而无需重新设置键盘?

编辑第一个 UITextField 时,如何将 UITableView 滚动到第二个 UITextField?