デリゲートを使用して、ビューコントローラから正しいセル数を表示するTableViewクラスにデータを渡そうとしています。 TableViewCellクラス内View ControllerからSwiftのクラスにメッセージを渡す
protocol GroupBillVCDelegate{
func passFriendArray(string: String)
}
...
class GroupBillViewController: UIViewController, UITableViewDelegate, UITableViewDataSource{
var delegate:GroupBillVCDelegate? // for delegate passing message
...
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
if (tableView == self.FriendTableView){
let friendListCell = tableView.dequeueReusableCell(withIdentifier: "friendListCell") as! CategoryRow
// transfer friends array to CategoryRow
self.delegate?.passFriendArray(string: "Hello There")
return friendListCell
}
}
}
:
class CategoryRow: UITableViewCell, UICollectionViewDataSource, UICollectionViewDelegateFlowLayout, GroupBillVCDelegate {
var s:String = String()
func passFriendArray(string: String) {
s = string
print(string)
}
...
// used for horizontal scrolling
func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
passFriendArray(string: s) // message supposed to appear here
print ("TEST")
return 10
}
...
}
私が悩みを持っているまず、私は(代わりにデバッグのためにここに文字列を使用して)、そのクラスへの配列の私のViewControllerインサイド
を渡すために必要なデリゲートを設定します。実行すると、コンソールにメッセージが表示されません。なぜそれが渡されていないのですか?
ここで、あなたは 'delegate'を割り当てていますか? – vacawama
申し訳ありませんが、GroupBillViewControllerクラスの下にありました – gorilla
あなたは 'delegate'を保持する宣言を持っていますが、値を代入するまでは' nil'です。 – vacawama