2017-02-01 16 views
0

通知が発生したときに呼び出されている関数をappdelegateに持っています。この関数が呼び出されると、特定のViewControllerにアクセスして、現在のViewであるかどうかにかかわらずテーブルセルを操作したいと考えています。 これはrootViewControllerメソッドを使用して動作させることができましたが、もはやルートビューとして設定されていないのでこれはもう機能しません。AppDelegateから特定のビューと対話する方法はありますか?

私は現在、このコードを使用しています:

let stopOption = UIAlertAction(title: "OK", style: .default) { 
     (action:UIAlertAction)->Void in self.audioPlayer?.stop() 
     print("Stop index is \(index)") 
     Alarms.sharedInstance.setEnabled(false, AtIndex: index) 
     let sb = UIStoryboard(name: "Main", bundle: nil) 
     let mainVC = sb.instantiateViewController(withIdentifier: "MainVC") 
     dump(mainVC) 
     let cells = (mainVC as! MainAlarmViewController).tableView.visibleCells 
     dump(cells) 
     for cell in cells 
     { 
      if cell.tag == index{ 
       print("Found the cell") 
       let sw = cell.accessoryView as! UISwitch 
       sw.setOn(false, animated: false) 
      } 
     } 
    } 

最初の「ダンプ」の文は正しいのViewControllerを返しているが、それはサブビューと第二のダンプ文を返すのいずれかの表示されません「 - 0の要素を」。

ご協力いただきまして誠にありがとうございます。

+0

AppDelegateとキャッチからの通知を投稿することができます。メインビューが読み込まれた後にのみサブビューにアクセスできます。 –

+0

関数が呼び出されるまでにどのコントローラが表示されますか? –

+0

MainAlarmViewControllerが現在表示されているかどうかにかかわらず、この通知が到着するまでにMainAlarmViewControllerがロードされ、セルが更新されないことを追加する必要があります。 – user1528944

答えて

1

この関数が呼び出されると、私はそれが現在のビューか

そのためにあなたがここにNotification

を使用する必要は一例であるかどうかを特定のViewControllerへのアクセスを取得し、表のセルを操作するために期待していますhttp://dev.iachieved.it/iachievedit/notifications-and-userinfo-with-swift-3-0/

notificatoin使用する方法あなたはViewControllerをにアクセスすることができViewController

関連する問題