2017-11-29 6 views
0

2つの異なるビューコントローラが互いに通信するようにデリゲートを適切に設定しました。データを渡す際に問題はありません(私はチェックし、データの受け渡しは成功です)。私は、新しい行を挿入するために、次のコードを使用するときに私がいる唯一の問題は、次のとおりです。デリゲートを介して別のビューコントローラから渡されたデータを使用してUITableViewに行を挿入

let indexPath = IndexPath(row: paymentMethodArray.count - 1, section: 0) 
tableView.insertRows(at: [indexPath], with: .automatic) 
tableView.reloadData() 

それは何もしません(それが行を更新しませんが、データがアレイに渡され、追加されます)。しかし、このコードは、同じView Controllerから別のView Controller(データがAddPaymentViewControllerからこのView Controllerに送信され、AddPaymentViewControllerが現在のvcの後に来るvc)から戻ってくることなく関数を呼び出すときに機能します。私の推測では、宛先segueまたはview controllerのコードが間違っているということです。

override func prepare(for segue: UIStoryboardSegue, sender: Any?) { 
    let addPaymentViewController = segue.destination as! AddPaymentViewController 
    addPaymentViewController.delegate = self 
} 

この追加情報が必要な場合は、追加してください。ありがとうございます。

+0

'insertRows(.../deleteRows(...'。)の直後に 'neverload ** 'reloadData()を呼び出す以外に、挿入/削除によってUIが更新されます。データソース配列に? – vadian

+0

"let indexPath ..."の直前に配列に渡されたデータを追加します。この場合、reloadData()はどこに置かれますか? –

+0

行を削除すると、それは冗長であり、アニメーション。 – vadian

答えて

0

さらに行を追加した後にテーブルの行数が更新されていることを再度確認してください。あなたは、テーブルに新しいセルの挿入の周りtableView.beginUpdates()tableView.endUpdates()を使用したい場合は

func tableView(UITableView, numberOfRowsInSection: Int) 

も確認してください。

+0

Please d 'beginUpdates/endUpdates'を提案しません。この場合は役に立たない。 – vadian

+0

だから私はあなたが言ったことを試して、それは行が追加されているが、それは画面に表示されないと言います。私は何かがアニメーションで動作していないと仮定していますか? –

+0

質問に含まれているコードにエラーが見つからなかった。たぶん 'tableView:cellForRowAtIndexPath:'も見直して、何も間違っていないようにしてください。表示されているセルを更新するために行を挿入した後、https://developer.apple.com/documentation/uikit/uitableview/1614879-insertrowsatindexpaths?language=objc状態でデリゲートとデータソースメソッドが呼び出されます。 – Mika

関連する問題