2017-04-10 52 views
1

我想在SWIFT 3中使用table.reloadData()来刷新tableView。 我设法让它在一段时间前工作,但现在它只是停止工作蓝色。没有错误,没有警告,什么都没有。SWIFT - table.reloadData()没有/停止工作

override func viewWillAppear(_ animated: Bool) 
{ 
    print("MainVC > viewWillAppear") 

    super.viewWillAppear(animated) 
    initializeCollectionView() 
} 

func initializeCollectionView() 
{ 
    print("MainVC > initializeCollectionView") 

    projectsArray = [] 
    getDocumentDirectoryContent() 

    if(projectsArray.count > 0) 
    { 
     print(projectsArray.count) 

     //For testing only - To make sure the array is not empty 
     for var i in 0..<projectsArray.count 
     { 
      print(projectsArray[i].project_name) 
     } 

     cvProjects.isHidden = false 
     ivMainVCPlaceholder.isHidden = true 
    } 
    else 
    { 
     cvProjects.isHidden = true 
     ivMainVCPlaceholder.isHidden = false 

     cvProjects.reloadData() 
    } 
} 

每次应用程序启动,它调用它从documentDirectory抓住数据和projectsArray阵列对象罢了。这工作得很好。

initializeCollectionView被称为viewWillAppear因为tableView也应该在孩子viewController被驳回被刷新。它也被称为自来水:

@IBAction func btnRefreshCollectionAction(_ sender: Any) 
{ 
    print("MainVC > btnRefreshCollectionAction") 

    initializeCollectionView() 
} 

的问题是,现在的表不会刷新既不当孩子viewController辞退,也不当我btnRefreshCollectionAction挖掘。

但是,projectsArray数组在initializeCollectionView中不为空。

我的第一个想法是责备我在注意到这个停止工作之前执行的Xcode升级,但通常如果在升级之后有任何问题存在警告和/或错误。

任何想法?

+1

那么你只在'projectsArray.count'为0时调用'reloadData'。 – dan

+1

所以这可能是一个粗略的观察,但是如果你获取的对象的数量大于0,你不应该重新加载数据?因为从我提供的代码中可以看到,如果数组不是空的,则不会重新加载! –

+0

现在我感到哑巴:|我一直在盯着它。谢谢你们:D – daydr3am3r

回答

1

这是因为只有当数组为空时才调用reload方法。当你有一个数组中的对象时,你正在执行一些其他的代码,但不能重新加载。或者在viewWillAppear中写入重载方法,或者也可以在If条件中重载方法。这应该工作。