Swift 无法从didReceiveLocalNotification重新加载UITable

Swift 无法从didReceiveLocalNotification重新加载UITable,swift,uitableview,uiviewcontroller,uilocalnotification,appdelegate,Swift,Uitableview,Uiviewcontroller,Uilocalnotification,Appdelegate,我的问题是,我收到本地通知,然后告诉我的一个风投更新其UITableView。但是,tableview不会重新加载。我知道所有的if语句检查都通过了,并且它正在运行代码。这最初让我相信这是一个线程问题,所以我将重新加载包装在dispatch\u async(dispatch\u get\u main\u queue(),{})中。然而,这也不起作用。那么,如果它不是一个线程问题,它是什么?这可能是什么原因造成的?我做错什么了吗 func application(application: UIAp

我的问题是,我收到本地通知,然后告诉我的一个风投更新其UITableView。但是,tableview不会重新加载。我知道所有的if语句检查都通过了,并且它正在运行代码。这最初让我相信这是一个线程问题,所以我将重新加载包装在
dispatch\u async(dispatch\u get\u main\u queue(),{})
中。然而,这也不起作用。那么,如果它不是一个线程问题,它是什么?这可能是什么原因造成的?我做错什么了吗

func application(application: UIApplication, didReceiveLocalNotification notification: UILocalNotification) {
    if notification.alertBody != nil{
        if notification.alertBody!.hasSuffix("starting") || notification.alertBody!.hasSuffix("ending"){
            dispatch_async(dispatch_get_main_queue(), {
                if topMostContoller() is SecondViewController{
                    let vc = self.tabBarController?.getVC(.Attendance) as! SecondViewController
                    vc.myTableView?.reloadRowsAtIndexPaths((vc.myTableView?.indexPathsForVisibleRows)!, withRowAnimation: .None)
    //              vc.myTableView?.reloadData() <- this doesn't work either
                }
            })
        }
    }
}
其中fullTabBar在选项卡栏的
viewDidLoad
中设置

fullTabBar=self.viewControllers作为[UIViewController]


self
是tabBar实例。

很遗憾,我看不出您的代码有任何问题,从逻辑上讲,它应该可以工作。可能是在调用重载数据后更新了数据源,尽管考虑到代码的清洁度,我怀疑情况是否如此

我会尝试下面的模式,只要看看你答案中的代码是否有错误

在SecondViewController的viewDidLoad中:

NSNotificationCenter.defaultCenter().addObserver(self, selector: "reloadTableView:", name: "reloadSecondVCTableView", object: nil)
在身体里:

func reloadTableView(_: NSNotification) {
    tableView.reloadData()
}
在您发布的代码中的第二个if语句之后发送通知:

NSNotificationCenter.defaultCenter().postNotificationName("reloadSecondVCTableView", object: nil)

你能在调用重载之前打印
vc.myTableView
的值吗?@PhillipMills
vc=Optional()
还有其他代码,例如为UITableView填充数据数组,运行但实际上不会影响它们应该运行的对象。为了使问题尽可能简单化,我省略了这一点。你介意发布你的getVC代码吗?@OlivierWilkinson我非常怀疑它是否返回零或不是正确的VC。看看编辑。啊,该死!嗯,问题一定在别处,那么,您如何更新tableView的数据源?可能在最初加载数据源后打印该数据源,然后在上面的代码中再次打印该数据源,以在调用重载数据之前检查其是否已更改
NSNotificationCenter.defaultCenter().postNotificationName("reloadSecondVCTableView", object: nil)