如何使用文本字段和按钮将文本添加到每个单元格?

时间:2015-12-16 06:35:37

标签: ios swift uitableview uitextfield

如何将文字添加到tableViewCell?我拖了一个textfieldbutton,然后在它们下方添加,设置tableViewtableviewCell。该单元的标识符是" Cell"。这是我到目前为止所做的代码。理想情况下,我想将textfield内部输入的文字添加到单元格中,这样,例如,如果我添加我的名字,它就会被添加,如果下一个人添加了她的名字,她的名字也会出现在细胞。

@IBOutlet weak var myTableView: UITableView!
@IBOutlet weak var textField: UITextField!

var stringArray = [String]()
@IBOutlet weak var AddBUtton: UIButton!

override func viewDidLoad() {
    super.viewDidLoad()
    // Do any additional setup after loading the view, typically from a nib.
    textField.delegate = self
}

func textFieldDidBeginEditing(textField: UITextField) {
}
func textFieldDidEndEditing(textField: UITextField) {
}
func textFieldShouldBeginEditing(textField: UITextField) -> Bool {
    return true
}
func textFieldShouldClear(textField: UITextField) -> Bool {
    return true
}
func textFieldShouldEndEditing(textField: UITextField) -> Bool {
    return true
}
func textFieldShouldReturn(textField: UITextField) -> Bool {
    textField.resignFirstResponder()
    return true
}

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
    let cellIdentifier = "Cell"
    let cell = self.myTableView.dequeueReusableCellWithIdentifier(cellIdentifier, forIndexPath: indexPath) as! UITableViewCell 
    return cell
}

4 个答案:

答案 0 :(得分:1)

尝试设置UITableViewCell的textLabel

func textFieldShouldReturn(textField: UITextField) -> Bool {
    stringArray.append(textField.text)
    textField.text = nil
    textField.resignFirstResponder()
    table.reloadData() // if possible just reload or insert only the cell
    return true
}

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
    let cellIdentifier = "Cell"
    let cell = self.myTableView.dequeueReusableCellWithIdentifier(cellIdentifier, forIndexPath: indexPath) as! UITableViewCell 
    cell.textLabel.text = stringArray[indexPath.row]
    return cell
}

答案 1 :(得分:0)

您可以创建一个继承自UITableViewCell的自定义UITableViewCell类。从那里,您可以添加一个变量来存储从textfield获得的任何文本。

之后,您可以将该单元格用作cellForRowAtIndexPath方法中的新单元格。

答案 2 :(得分:0)

在自定义UITableViewCell中尝试this control。每次在文本框中输入名称时,将该名称添加到此控件的数据源,以便下次在建议列表中显示。您可以轻松地在用户输入时过滤文本(如果需要)。

答案 3 :(得分:0)

尝试做这样的事情:

@IBOutlet weak var text: UITextField!

@IBOutlet weak var button: UIButton!
@IBOutlet weak var tableView: UITableView!

var name:NSMutableArray = NSMutableArray();

override func viewDidLoad() {
    super.viewDidLoad()
    // Do any additional setup after loading the view, typically from a nib.
    self.tableview.delegate = self;        
    self.tableView.dataSource = self;
}

override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()
    // Dispose of any resources that can be recreated.
}

@IBAction func buttonClicked(sender: AnyObject) {
    if(self.text.text == ""){
        let alert = UIAlertController(title: "Alert", message: "Enter a name", preferredStyle: UIAlertControllerStyle.Alert)
        alert.addAction(UIAlertAction(title: "OK", style: UIAlertActionStyle.Default, handler: nil))
        self.presentViewController(alert, animated: true, completion: nil);
    }
    self.name.addObject(self.text.text!)
    self.text.text = "";
    self.tableView.reloadData();
}

func numberOfSectionsInTableView(tableView: UITableView) -> Int {
    return 1;
}

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
    let cellIdentifier = "Cell";
    var cell = tableView.dequeueReusableCellWithIdentifier(cellIdentifier);
    if(cell == nil){
        cell = UITableViewCell(style: UITableViewCellStyle.Subtitle, reuseIdentifier: cellIdentifier);
    }

    cell?.textLabel?.text = self.name[indexPath.row] as? String

    return cell!;
}

func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    return self.name.count;
}