2017-04-12 57 views
1

我有一個ViewController與tableview和一個單獨的筆尖創建表視圖單元格,該單元格包含一個textview。 按添加按鈕,然後tableview將創建一個新的單元格,所以我可以輸入文本到textView。 我想每次插入單元格到第一行,不管存在多少個單元格。 最後,按完成按鈕將文本保存到coredata。如何通過添加按鈕添加一個新的單元格,並將文本保存到Coredata

的廈門國際銀行實體名稱爲「清單」中,廈門國際銀行文件名是「ChecklistCell」

class ChecklistViewController: 

    class ChecklistViewController: UIViewController,UITableViewDelegate,UITableViewDataSource { 

    var items = [Checklist]() 

    var cellTextView:ChecklistCell! 

    @IBOutlet weak var tableView: UITableView! 

    @IBOutlet var toolBar: UIToolbar! 

    let context = (UIApplication.shared.delegate as! AppDelegate).persistentContainer.viewContext 

    struct TableViewCellIdentifiers{ 
     static let checklistCell = "ChecklistCell" 
    } 

    @IBAction func addItem(){ 

     //i don't know how to write this code 

    } 

    @IBAction func toolBarDoneButton(_ sender: UIBarButtonItem) { 
     //write data to coredata 
     let context = (UIApplication.shared.delegate as! AppDelegate).persistentContainer.viewContext 
     let item = Checklist(context: context) 

     item.textView = cellTextView.textView.text 

     (UIApplication.shared.delegate as! AppDelegate).saveContext() 


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

     let cellNib = UINib(nibName: "ChecklistCell", bundle: nil) 
     tableView.register(cellNib, forCellReuseIdentifier: "ChecklistCell") 
    } 

    override func viewWillAppear(_ animated: Bool) { 
     getData() 
     tableView.reloadData() 
    } 

    func getData(){ 
     do { 
      items = try context.fetch(Checklist.fetchRequest()) 
     } catch { 
      print("Fetching Failed") 
     } 
    } 

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

    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { 
     let cell = tableView.dequeueReusableCell(withIdentifier: TableViewCellIdentifiers.checklistCell, for: indexPath) as! ChecklistCell 

     let item = items[indexPath.row] 

     if let myItem = item.textView { 
      cell.textView.text = myItem 
     } 

     cell.textView.inputAccessoryView = toolBar 

     return cell 

    } 



} 
+0

核心數據Swift的所有操作:https://iosdevcenters.blogspot.com/2016/06/crud-operations-using-code-data-swift.html –

回答

0

items = [Checklist()] + items將在您的項目數組的開頭(指數[0])添加一個新的清單對象。如果你正在爲你的Checklist類使用一個自定義的初始化方法,你還需要在這裏填寫那些init參數,如Checklist(/*init params here*/)

要更改您的tableView爲用戶,一旦你改變了它的數據源有這個答案:How to insert new cell into UITableView in Swift,我已經包含在下面的代碼。

對於雨燕3.0addItem()功能可能看起來像:

func addItem() { 

    items = [Checklist()] + items //adds Checklist item at beginning of array 

    tableView.beginUpdates() 
    tableView.insertRows(at: [IndexPath(row: 0, section: 0)], with: .automatic) //row param is 0 for first row 
    tableView.endUpdates() 
} 

希望有所幫助。

相關問題