无法获取要保存到tableview的新项目

时间:2016-09-01 15:22:08

标签: ios swift uitableview

请帮助....我是Swift的新手(一般编码)但是我使用相同的代码制作了一个早期的应用程序,它有一个带有1个文本字段的VC,一个评级控件和一个图像,工作得很好。此版本有2个文本字段和日期选择器,但在尝试添加新项目时,只有示例数据出现在tableView中。

enter image description here 因此,在点击+按钮后,您将进入下一页,您可以在按下保存时添加新信息(如下所示),新信息应显示在起始表格视图中。

enter image description here

导入UIKit

类BudgetTableViewController:UITableViewController {

//Properties
var budgets = [Budget]()


override func viewDidLoad() {
    super.viewDidLoad()
    loadSampleBudgets()

}

func loadSampleBudgets() {

    let budget1 = Budget(date: "8/16/2016", name: "Eyebrows", amount: "15")!
    let budget2 = Budget(date: "8/28/2016", name: "Acme", amount: "59")!
    let budget3 = Budget(date: "9/10/2016", name: "Wildwood", amount: "199")!

    budgets += [budget1, budget2, budget3]
}
override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()
    // Dispose of any resources that can be recreated.
}

// Table view data source

override func numberOfSectionsInTableView(tableView: UITableView) -> Int {
    // #warning Incomplete implementation, return the number of sections
    return 1
}

override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {

    return budgets.count
}


override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
    let cellIdentifier = "BudgetTableViewCell"

    let cell = tableView.dequeueReusableCellWithIdentifier(cellIdentifier, forIndexPath: indexPath) as! BudgetTableViewCell
    let budget = budgets[indexPath.row]

    cell.dateLabel.text = budget.date
    cell.nameLabel.text = budget.name
    cell.amountLabel.text = budget.amount
    return cell
}

@IBAction func unwindToMealList(sender: UIStoryboardSegue) {
    if let sourceViewController = sender.sourceViewController as? BudgetViewController, budget = sourceViewController.budget {
        //Add a new meal
        let newIndexPath = NSIndexPath(forRow: budgets.count, inSection: 0)
        budgets.append(budget)
    }
}
  
    
      
        
          
            

打破第二个VC

          
        
      
    
  

导入UIKit

类BudgetViewController:UIViewController,UITextFieldDelegate,UINavigationControllerDelegate {

// Properties:
@IBOutlet weak var datePicker: UIDatePicker!
@IBOutlet weak var nameTextField: UITextField!
@IBOutlet weak var amountTextField: UITextField!
@IBOutlet weak var dateDisplay: UILabel!
@IBOutlet weak var saveButton: UIBarButtonItem!


var budget: Budget?

// Date picker:
let dateFormatter = NSDateFormatter()

func setDate() {
    dateFormatter.dateStyle = NSDateFormatterStyle.MediumStyle
    dateDisplay.text = dateFormatter.stringFromDate(datePicker.date)
}

// Navigation

// This method lets you configure a view controller before it's presented
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
    if saveButton === sender {

        let name = nameTextField.text ?? ""
        let date = dateDisplay.text ?? ""
        let amount = amountTextField.text ?? ""

// set the budget to be passed to the Controller, this code configures the meal prperty with the appropriate values before the segue executes

        budget = Budget(date: date, name: name, amount: amount)

    }
}

// Actions:
@IBAction func datePickerChanger(sender: AnyObject) {
    setDate()
}

override func viewDidLoad() {
    super.viewDidLoad()

    // Handle the text field

    nameTextField.delegate = self
    amountTextField.delegate = self
}
// UITextFieldDelegate

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


}

}

1 个答案:

答案 0 :(得分:0)

在向预算添加新数据后,您应该为更新表格视图调用insertRowsAtIndexPaths:withRowAnimationreloadData方法(表格视图的数据源)