如何与 AppDelegate 中的特定视图交互?
Posted
技术标签:
【中文标题】如何与 AppDelegate 中的特定视图交互?【英文标题】:How can I interact with specific Views from the AppDelegate? 【发布时间】:2017-02-01 03:30:04 【问题描述】:我的 appdelegate 中有一个函数,它在通知触发时被调用。当调用此函数时,我希望能够访问特定的 ViewController 并操作表格单元格,无论它是否是当前视图。 我能够使用 rootViewController 方法使其工作,但由于它不再设置为根视图,因此不再工作。
我目前正在使用此代码:
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 个元素”。
非常感谢任何帮助。
【问题讨论】:
您可以访问视图控制器。但是只有在加载主视图后才能访问子视图。 函数被调用时哪个控制器可见? 我应该补充一点,在此通知到达时 MainAlarmViewController 已加载,并且无论 MainAlarmViewController 当前是否可见,单元格都不会更新。 【参考方案1】:当这个函数被调用时,我希望能够访问一个特定的 ViewController 并操作一个表格单元格,无论它是否是当前视图
为此,您需要使用Notification
这里是如何使用通知http://dev.iachieved.it/iachievedit/notifications-and-userinfo-with-swift-3-0/的示例
您可以从AppDelegate
发布通知并赶上ViewController
【讨论】:
以上是关于如何与 AppDelegate 中的特定视图交互?的主要内容,如果未能解决你的问题,请参考以下文章
从 AppDelegate、Swift 导航到 TabBarController 内的特定视图控制器