2016-11-23 3 views
0

私はTableViewCellのクリックでセグを、別のViewControllerにセーブボタンを押して保存ボタンでうまく動作しますが、バックバーボタンをクリックするとTableViewCellも変わります。どうすれば変更を破棄できますか? NoteTableViewControllerとNoteViewControllerSegueはバックバーボタンのデータを保存します

TableViewController方法は

override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { 
    let cellIdentifier = "NoteTableViewCell" 

    let cell = tableView.dequeueReusableCell(withIdentifier: cellIdentifier, for: indexPath) as! NoteTableViewCell 
    let note = notes[indexPath.row] 

    cell.noteLabel.text = note.note 

    return cell 
} 

TableViewControllerがセグエ法の準備

のtableView cellRowAt方法があります

override func prepare(for segue: UIStoryboardSegue, sender: Any?) { 
    if segue.identifier == "ShowDetail" { 
     let noteDetailViewController = segue.destination as! NoteViewController 

     if let selectedNoteCell = sender as? NoteTableViewCell { 
      let indexPath = tableView.indexPath(for: selectedNoteCell)! 
      let selectedNote = notes[indexPath.row] 
      noteDetailViewController.note = selectedNote 
      noteDetailViewController.oldNote = someNote 
     } 
    } 
} 

このメソッドは、データを保存するためで、NoteViewControllerのsaveButtonにそれが接続されています

@IBAction func unwindToNoteList(sender: UIStoryboardSegue) { 
    if let sourceViewController = sender.source as? NoteViewController { 
     let note = sourceViewController.note 
     if note?.note != nil { 
      if let selectedIndexPath = tableView.indexPathForSelectedRow { 
       notes[selectedIndexPath.row] = note! 
       tableView.reloadRows(at: [selectedIndexPath], with: .none) 
      } else { 
       let newIndexPath = NSIndexPath(row: notes.count, section: 0) 
       notes.append(note!) 
       tableView.insertRows(at: [newIndexPath as IndexPath], with: .top) 
      } 
      saveNotes() 
     } 
    } 
} 

NoteViewController方法

実装NSObjectのコピー()メソッドによって、

override func prepare(for segue: UIStoryboardSegue, sender: Any?) { 
    if saveButton === sender as? UIBarButtonItem { 
     if let noteText = noteTextView.text { 
      note?.note = noteText 
     } 
    note?.toDate = remindDate 
    note?.image = photoImageView.image 
    } else { 
     note = oldNote 
    } 
} 
+1

どういう意味ですか?新しいビューコントローラで選択したノートを変更すると、以前のビューコントローラのセル内のデータが変更されますが、セル内の変更情報は必要ありません。 –

+0

は日付またはデータを保存しますか? – Retterdesdialogs

+0

あなたは何を保存するのですか? –

答えて

0

問題が解決セグエの準備します。そして、NoteViewControllerにコピーを送る。

関連する問題