通知が発生したときに呼び出されている関数を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の要素を」。
ご協力いただきまして誠にありがとうございます。
に
AppDelegate
とキャッチからの通知を投稿することができます。メインビューが読み込まれた後にのみサブビューにアクセスできます。 –関数が呼び出されるまでにどのコントローラが表示されますか? –
MainAlarmViewControllerが現在表示されているかどうかにかかわらず、この通知が到着するまでにMainAlarmViewControllerがロードされ、セルが更新されないことを追加する必要があります。 – user1528944