2017-11-15 8 views
0

私はdelegateを迅速に処理しています。私は固定された3つの行数を持つテーブルビューを持っており、すべての行はセルのためにseprate .xibを持っています。DelegateメソッドがTableViewCellから呼び出されていない

私はセルに入っているデータに基づいて各セルの高さを調整しています。だから、tableViewが前にロードされ、セルがロードされてから、をUITableViewCellクラスに定義しました。

クラスCalenderTimeTableViewCellの上に私がしました:var myDelegate: ReloadingTable?をし、この方法で私はself.myDelegate?.updateTableView()を呼んでいる(Alamofireを使用して)データを取得しています:

protocol ReloadingTable { 
    func updateTableView() 
} 

を、このクラスの中にawakeFromNib()の上に私がしました。 viewController

とは、私はすべてのtableView最初は、私はクラスReloadingTableを拡張しましたし、このクラスでは私がしました:

func updateTableView() { 
     tableView.reloadData() 
    } 

ブレークポイントを適用することにより、コードがself.myDelegate?.updateTableView()ではなくして手に入れましたviewControllerupdateTableViewメソッドが呼び出されていません。

+1

にcellForRowAt機能アサイン対象のクラスで

をmyDelegateするために割り当てる必要がコメントしたようにどこmyDelegate' 'へのターゲットクラスを割り当てていますか? – vadian

+0

デリゲートをViewControllerとして設定する必要があります。デバッグポイントでself.myDelegateの値をチェックすると、それはゼロになります。 –

+0

このリンクに進むhttp://stephenradford.me/creating-a-delegate-in-swift/ – gaurang

答えて

0

@vadianはあなたがターゲットクラスは、私のデリゲート

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { 
    let cell = tableView.dequeueReusableCell(withIdentifier: "Cell") as! CalenderTimeTableViewCell 
    cell.myDelegate = self 
    //Other 
    } 
関連する問題