2017-05-08 12 views
0

私はネイティブView Controllerのメインビューとして反応ビューを持っています。 NativeEventEmitterがリスニングしているViewDidAppearの後に、ネイティブのView Controllerでイベントを送出します。iOS React Native:ViewDidAppearからイベントを表示してコンポーネントを表示

componentDidMount(){ 
    const eventManager = new NativeEventEmitter(ReactMainManager); 

    this._subscription = eventManager.addListener(
     'ViewDidLoad', 
     (info) => { 
      //.. do something 
     } 
    ); 
    ... 

InsideEventEmitter

@objc func viewWasHit(_ callback: RCTResponseSenderBlock){ 
    self.sendEvent(withName: "ViewDidLoad", body: []) 
} 

インサイドReactViewController

class subClassReactViewController: ReactViewController{ 
    override func viewDidAppear(_ animated: Bool){ 
    if let reactView = reactRootView as? RCTRootView{ 
     //How do I fire viewHasHit from here? 
    } 
    } 
} 

答えて

0

私はよりよい解決策の欠如のための通知センターを使用して終わりました。 RCTEventEmitterで

override func viewDidAppear(_ animated: Bool) { 
    super.viewDidAppear(animated) 
    NotificationCenter.default.post(name: NSNotification.Name("InfoViewAppeared"), object: nil) 
} 

クラスReactAccountInfoManager:RCTEventEmitter {

override init() { 
    super.init() 
    NotificationCenter.default.addObserver(self, selector: #selector(ReactAccountInfoManager.viewAppeared), name: NSNotification.Name(rawValue: "InfoViewAppeared"), object: nil) 
} 

deinit { 
    NotificationCenter.default.removeObserver(self) 
} 



@objc func viewAppeared(){ 

    self.sendEvent(withName: "ViewAppeared", body: headerDictionary) 

} 
関連する問題