2015-08-22 64 views
0

我有一個TableViewController,讓我們叫它A,這是在另一個視圖控制器的容器視圖,B。當B中的值發生變化時,我需要A來重新加載它的數據。我也需要它從B得到這個改變的值。有任何想法嗎?從父母重新加載TableViewController

+1

您只需從你的對象B的實例調用在一個方法。這基本上是一種委託模式。 – Paulw11

回答

1

您是否考慮過使用通知

所以,在 - 我會做這樣的事情:

// ViewControllerB.swift 

import UIKit 

static let BChangedNotification = "ViewControllerBChanged" 

class ViewControllerB: UIViewController { 

    //... truncated 

    func valueChanged(sender: AnyObject) { 
     let changedValue = ... 
     NSNotificationCenter.defaultCenter().postNotificationName(
      BChangedNotification, object: changedValue) 
    } 

    //... truncated 
} 

跟進一個看起來像這樣 - 在ValueType簡直是你提到的值的類型:

import UIKit 

class ViewControllerA: UITableViewController { 

    //... truncated 

    required init(coder aDecoder: NSCoder) { 
     super.init(coder: aDecoder) 

     //...truncated 

     NSNotificationCenter.defaultCenter().addObserver(self, 
      selector: "onBChangedNotification:", 
      name: BChangedNotification, 
      object: nil) 
    } 

    //... truncated 

    func onBChangedNotification(notification: NSNotification) { 
     if let newValue = notification.object as? ValueType { 

      //...truncated (do something with newValue) 

      self.reloadData() 
     } 
    } 
} 

最後 - 不要忘了​​在deinit方法:

import UIKit 

class ViewControllerA: UITableViewController { 

    //... truncated 

    deinit { 
     NSNotificationCenter.defaultCenter().removeObserver(self) 
    } 

    //... truncated 
} 
相關問題