2015-09-13 49 views
1

我在更新聯繫人數據時遇到問題。查看1號主視圖與tableView我有聯繫人列表。從列表中點擊某個人後,我有下一個tableView(查看no.2 [從視圖1推到視圖2])與細節和編輯按鈕。接下來,如果我按編輯我有模態視圖no3與編輯輸入時,我可以更改名稱。保存之後,我怎麼能刷新更新一些數據後如何刷新應用程序中的數據?

  1. 稱號的tableView導航欄
  2. 稱號後退按鈕
  3. 主要的tableView在廠景

我用在我看來NO1

let managedObjectContext: NSManagedObjectContext? = (UIApplication.sharedApplication().delegate as? AppDelegate)?.managedObjectContext 
    var fetchedResultsController: NSFetchedResultsController? 

    override func viewDidLoad() { 
     super.viewDidLoad() 
     self.configureView() 
     fetchedResultsController = NSFetchedResultsController(fetchRequest: CLInstance.allContactsFetchRequest(), managedObjectContext: managedObjectContext!, sectionNameKeyPath: nil, cacheName: nil) 
     fetchedResultsController?.delegate = self 
     do { try fetchedResultsController?.performFetch() } catch _ {} 
     tableView.reloadData() 
    } 

func controllerWillChangeContent(controller: NSFetchedResultsController) { 
     tableView.beginUpdates() 
    } 

    func controllerDidChangeContent(controller: NSFetchedResultsController) { 
     tableView.endUpdates() 
    } 



    func controller(
     controller: NSFetchedResultsController, 
     didChangeObject anObject: AnyObject, 
     atIndexPath indexPath: NSIndexPath?, 
     forChangeType type: NSFetchedResultsChangeType, 
     newIndexPath: NSIndexPath?) { 

      switch type { 
      case .Insert: 
       tableView.insertRowsAtIndexPaths(NSArray(object: newIndexPath!) as! [NSIndexPath], withRowAnimation: .Fade) 
       break 
      case .Delete: 
       tableView.deleteRowsAtIndexPaths(NSArray(object: indexPath!) as! [NSIndexPath], withRowAnimation: .Fade) 
       break 
      case .Move: 
       print("move") 
       //tableView.moveRowAtIndexPath(indexPath!, toIndexPath: newIndexPath!) 
       break 
      case .Update: 
       print("update") 
       tableView.cellForRowAtIndexPath(indexPath!) 
       break 
      } 
    } 

我預計當我保存此代碼中的數據NSFetchedResultsController進行更新,但在我的日誌文件我看到打印出「移動」而不是「更新E「如何以其他方式做到這一點?

回答

1

首先,您需要將出口配置爲要更新的任何屏幕元素。然後,您只需將他們的.text屬性設置爲新值。

的是的tableView一個有些不同,你必須重新加載它:myTableView.reloadData()

就在幾個疑難雜症的:

  1. 如果你的「myTableView不重裝,確保該

    倍率FUNC的tableView(的tableView:UITableView的,的cellForRowAtIndexPath indexPath:NSIndexPath) - >的UITableViewCell {

創建tableViewCell的函數使用更新的源創建單元格。

  • 做你的主線程上的所有更新(如果您正在使用的線程)
  • +0

    謝謝,我添加的表格重新加載'viewDidAppear',現在是確定的。但我不知道如何創建Outlet上的backbitten – Wraith

    +0

    backbitten?創建一個插座很容易。最簡單的方法是確保您在助理編輯器中(在編輯器中顯示兩個窗格)。在左側窗格中,選擇Storyboard View,在右側的ViewController的代碼中。然後對於每個UI元素(例如標籤),您需要控制Outlet,將其從左窗格(情節提要)拖到右窗格(代碼)。將出現一個彈出對話框,您可以在其中輸入數據 – Glenn

    +0

    BackButton抱歉 – Wraith

    相關問題