2016-08-29 45 views
0

ViewControllerにtableViewを設定しました。このテーブルビューには、1セクション、2プロトタイプセルがあります.1セクションはセクションの行数を戻すために使用され、もう1つはカスタムヘッダーの表示に使用されます。 viewDidAppear()テーブルビュー前の呼び出し関数:viewForHeaderInSection:が呼び出されました - Swift

  • self.loadData()機能はNSUserDefaultsからデータを取得するために呼び出されます。このデータはtableView:viewForHeaderInSection:で使用され、ヘッダーセクションにラベルが挿入されます。 viewDidAppear()が呼び出される前にtableView:viewForHeaderInSection:が自動的に呼び出されるため、ヘッダーセクションのラベルにNSUserDefaultsから取得したデータが設定されないという問題があります。 tableView:viewForHeaderInSection:を呼び出す前にself.loadData()に電話する方法はありますか?

+0

viewWillAppearを使用 – Shades

+0

@Shades私がviewWillAppearを使用すると、.Checkmarkアクセサリは以前選択された行に表示されなくなります。 NSUserDefaultsに記録されているindexPathに基づいてチェックマークを割り当てます。 – bibscy

+1

@mattが述べたように、データを読み込んだ後にtableView.reloadData()を呼び出して、取得したすべてのデータを取り込みます。 – Shades

答えて

1

これは一般的な問題です。テーブルビューが最初に表示されたときにデータが準備できていません。現在の状態を考慮して、テーブルビューのデータソースとデリゲートに尋ねられる質問に正解を単に与えるだけです。データがない場合は、たとえばセクションがないとします。データがある場合は、テーブルビューでreloadDataを呼び出して、再度質問する質問を取得します。

関連する問題