대리자를 사용하여 뷰 컨트롤러의 데이터를 올바른 셀 수를 표시하는 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