2017-04-10 29 views
1

SWIFT 3でtable.reloadData()を使用してテーブルビューをリフレッシュしようとしています。 これまでのところこの作業をすることができましたが、青。エラーなし、警告なし、何もありません。SWIFT - table.reloadData()not working/stopped working

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配列を埋め呼び出しを起動するたびに。これはうまく動作します。 tableViewも子供viewControllerが却下されたときにリフレッシュされることになっていたので、

initializeCollectionViewviewWillAppearに呼ばれています。また、タップに呼び出されます。

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

    initializeCollectionView() 
} 

問題は、私はbtnRefreshCollectionActionをタップしたときに、今の表では、どちらの子viewControllerが却下されたときにも更新されませんです。

initializeCollectionViewでは、projectsArrayの配列は空ではありません。

私が最初に思ったのは、これが動作を停止したことに気づく前に実行したXcodeアップグレードを非難することでしたが、通常はアップグレード後に問題があると警告やエラーが発生します。

アイデア?

+1

'projectsArray.count'が0のときにのみ' reloadData'を呼び出すことになります。 – dan

+1

これは粗観測であるかもしれませんが、取得したオブジェクトの数が0より大きい場合はデータを再ロードしないでください?あなたが指定したコードからわかるように、配列が空でなければ、リロードしません! –

+0

今私は気が気になる:|そして私はしばらくそれを見てきました。ありがとうございました:D – daydr3am3r

答えて

1

これは、配列が空の場合にのみreloadメソッドを呼び出すためです。配列内にオブジェクトがある場合、他のコードを実行していますが、リロードはしません。 viewWillAppearにリロードメソッドを書き込むか、リロードメソッドをIfの条件にも書き込んでください。それはうまくいくはずです。