2016-08-15 14 views
0

デリゲートコールによって更新する必要があるテーブルビューコントローラがあります。私は、データソースとデリゲートを設定し、テーブルビューの初期ロード時に、すべて期待どおりに動作します。私は、データソースの更新後に呼び出されるデリゲートメソッドを持っています。デリゲートは、.loadData()を呼び出すテーブルビューコントローラクラスのrefreshメソッドを呼び出します。reloadDataの後にcellForRowAtIndexPathが呼び出されない

reloadDataが呼び出されると、numberOfRowsInSectionが呼び出され、正確に行数が返されます。ただし、cellForRowAtIndexPathは呼び出されません。

この特定のケースでは、numberOfRowsInSectionは2を返します。したがって、cellForRowAtIndexPathは2回呼び出されますが、0回と呼ばれます。

初期ロードでは問題ありません。 reloadDataが呼び出されたときだけです。cellForRowAtIndexPathは無視されます。私はObj-Cでこれと同じことを何度もやってきました。 Swiftにこれに関する既知の問題はありますか?

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { 

    let cell = tableView.dequeueReusableCellWithIdentifier(LayerMenuCell.reuseId) as! LayerMenuCell 
    // .... 
    return cell 
} 

func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 
    print(layerEntries?.count) 
    return (layerEntries?.count)! 
} 

func refresh() { 
    self.layersTableView.reloadData() 
} 

ありがとうございます!

+0

コードを共有できますか? –

+0

コードについては記事を参照してください。 NumberOfRowsInSectionsがゼロではない正確な数値を返しても、reloadDataが呼び出されたときにコードは決して入力されません。 – Pheepster

+0

'numberOfSectionsInTableView'を使用していることを確認し、ゼロを返していないことを確認してください。 – Aziz

答えて

4

あなたUITableViewdelegatedataSourceを設定してみてください:あなたが期待通りにテーブルビューが働いていないときにチェックする必要があり

myTable.delegate = self 
myTable.dataSource = self 
+0

両方が設定されています。この記事で触れたように、テーブルビューは初期ロード時に問題なくロードされます。これは、データソース/デリゲートがまだ設定されていない場合は発生しません。私のケースでは、numberOfRowsInSectionが呼び出されます。データソース/代理人が設定されていない場合はそうではありません。 – Pheepster

-2

もの:
1.ストーリーボードを介して、またはコードにより、デリゲートとデータソースを設定します。

2.styleboardのtableViewがtableView outletに接続されているかどうかを確認します。
3. numberOfRowsInSectionとnumberOfSectionsInT ableViewをチェックして正しい値を返します。
4.メソッドが正しく記述されているかどうかを確認します。
5. UIViewControllerの後にデリゲートとデータソースを追加します。

<UITableViewDelegate , UITableViewDataSource> 

これはあなたが何かを逃している場合に役立ちます。

+0

デリゲートが正しく設定されていない場合、numberOfRowsInSectionは呼び出されません。呼び出されないtableviewデリゲートメソッドは、cellForRowAtIndexPathだけです。 – Pheepster

+0

同じ回答が既に掲載されています。 – penatheboss

0

マニュアルで指定されたとおりに機能テーブルビューは、3つの表ビュー・データ・ソース 方法が必要

func numberOfSectionsInTableView(tableView: UITableView) -> Int 
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int 
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell 

あなたは上記の3つのデリゲートメソッドを実装し、それらが細胞の高さが0 /テーブルの高さが両方とも0であることができることのチャンスがあり、いくつかのゼロ以外の値または0

を返してくださいMAake行メソッドのcaseセルは呼び出されません。

また、デリゲートを正しく設定し、メインスレッドでreloadDataメソッドを呼び出すようにしてください。 here

+0

私の他のコメントで述べたように、これらの関数はすべて正確に戻ります。値をハードコーディングしても効果はありません。さらに、これらのメソッドが不適切に実装された場合、テーブルビューは初期ロードでは機能しませんが、初期ロードでは機能します。 reloadDataが呼び出されたときだけ失敗します。 – Pheepster

関連する問題