单个视图控制器上的UITextField和UITableView

时间:2014-11-11 23:52:19

标签: ios uitableview swift

我试图创建一个视图控制器,其中有一个文本字段填充下面的tableview,理想情况下,用户将能够继续添加到tableview而不会在两个视图之间跳转。

我以前在一个视图上使用文本字段来填充UITableView并使用prepareForSegue将数据推送到表中,但是我还没有能够使用一个视图。< / p>

任何人都可以请指出我出错的地方或推动我阅读教程/文档来提供帮助吗?

编辑:清晰度

import UIKit

class ViewController: UIViewController, UITableViewDelegate, UITableViewDataSource, UITextFieldDelegate {

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

var items: [String] = ["Pls", "work", "pls", "work", "pls"]
var foodGroup: FoodGroup = FoodGroup(itemName:"")

//var foodGroup: [FoodGroup] = []

override func viewDidLoad() {
    super.viewDidLoad()

    self.tableView.registerClass(UITableViewCell.self, forCellReuseIdentifier: "cell")
}

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

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

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {

    var cell:UITableViewCell = self.tableView.dequeueReusableCellWithIdentifier("cell") as UITableViewCell
    cell.textLabel.text = self.items[indexPath.row]
    return cell
}

func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
    println("Selected cell #\(indexPath)")
}

func addFood(sender: AnyObject!) {
    if (countElements(self.textField.text) > 0) {
        self.foodGroup = FoodGroup(itemName: self.textField.text)
    }
}

@IBAction func addFoodToList() {
    let source = FoodGroup
    let foodGroup:FoodGroup = source.foodGroup

    if foodGroup.itemName != "" {
        self.foodGroup.append(foodGroup)
        self.tableView.reloadData()
    }
}

}

1 个答案:

答案 0 :(得分:0)

这似乎是你的意图是让你的dataSource成为一个FoodGroup对象的数组。如果确实如此,您可以删除foodGroup实例变量并将项目定义更新为:

var items = [FoodGroup]()

然后在addFoodToList:

if self.textField.text != "" {
    let foodGroup = FoodGroup(itemName: self.textField.text)
    self.items.append(foodGroup)
    self.tableView.reloadData()
}

最后在cellForRowAtIndexPath:

var cell = self.tableView.dequeueReusableCellWithIdentifier("cell") as UITableViewCell

let foodGroup = self.items[indexPath.row] as FoodGroup
cell.textLabel.text = foodGroup.itemName

return cell

此外,我还没有看到你的addFood(sender:AnyObject!)函数的意图。看起来很残酷。我会摆脱它。祝你好运!