У меня есть представление коллекции, которое хранится в репозитории github с именем «MEVHorizontalContacts». Теперь я пытаюсь заполнить данные из разбора в каждую отдельную контактную ячейку. Проблема в том, что никакие данные не заполняются в каждую контактную ячейку. И когда я установил количество ячеек в ячейке больше 0, приложение выйдет из строя. Вот код. Мне нужна помощь в загрузке данных в каждый элемент просмотра коллекции.не может загружать данные в пользовательский вид коллекции
import UIKit
import Parse
class MevHorizontalContactsExample2: MEVHorizontalContactsExample1, MEVHorizontalContactsDataSource, MEVHorizontalContactsDelegate {
var FullNameArray = [String]()
var ProfileImageArray = [PFFile]()
var horizontalContacts: MEVHorizontalContacts!
override init(frame: CGRect) {
super.init(frame: frame)
self.setupView()
}
required init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
func setupView() {
self.translatesAutoresizingMaskIntoConstraints = false
self.horizontalContacts = MEVHorizontalContacts()
self.horizontalContacts.backgroundColor = UIColor.white
self.horizontalContacts.dataSource = self
self.horizontalContacts.delegate = self
self.addSubview(self.horizontalContacts)
self.addConstraints(NSLayoutConstraint.constraints(withVisualFormat: "H:|[horizontalContacts]|", options: .alignAllCenterX, metrics: nil, views: ["horizontalContacts": self.horizontalContacts]))
self.addConstraints(NSLayoutConstraint.constraints(withVisualFormat: "V:|[horizontalContacts]|", options: .alignAllCenterY, metrics: nil, views: ["horizontalContacts": self.horizontalContacts]))
loadMore()
}
// MARK: - MEVHorizontalContactsDataSource Methods
func numberOfContacts() -> Int {
return FullNameArray.count
}
func numberOfItems(atContactIndex index: Int) -> Int {
switch index {
case 0:
return 2
case 1:
return 3
case 2:
return 2
case 3:
return 4
default:
return 3
}
}
// pagination
func loadMore() {
// STEP 2. Find posts made by people appended to followArray
let query = PFQuery(className: " CommercialUsers")
query.addDescendingOrder("createdAt")
query.findObjectsInBackground(block: { (objects, error) -> Void in
if error == nil {
// clean up
self.FullNameArray.removeAll(keepingCapacity: false)
self.ProfileImageArray.removeAll(keepingCapacity: false)
// find related objects
for object in objects! {
self.FullNameArray.append(object.object(forKey: "FullName") as! String)
}
} else {
print(error!.localizedDescription)
}
})
}
func contact(at index: Int) -> MEVHorizontalContactsCell {
var cell: MEVHorizontalContactsCell? = self.horizontalContacts.dequeueReusableContactCell(for: index)
cell?.imageView?.image = UIImage(named: self.getImageName(at: index))
cell?.imageView?.layer.borderColor = UIColor.clear.cgColor
cell?.imageView?.layer.borderWidth = 1.0
cell?.label?.text = self.getUserName(at: index)
cell?.label?.font = UIFont.boldSystemFont(ofSize: CGFloat(12.0))
return cell!
}
func item(_ item: Int, atContactIndex index: Int) -> MEVHorizontalContactsCell {
var image: UIImage?
var labelText: String
switch item {
case 0:
labelText = "Call"
image = UIImage(named: "actionCall")
case 1:
labelText = "Email"
image = UIImage(named: "actionEmail")
case 2:
labelText = "Message"
image = UIImage(named: "actionMessage")
default:
labelText = "Call"
image = UIImage(named: "actionCall")
}
var cell: MEVHorizontalContactsCell? = self.horizontalContacts.dequeueReusableItemCell(for: index)
cell?.imageView?.image = image
cell?.imageView?.tintColor = UIColor(red: CGFloat(34/255.0), green: CGFloat(167/255.0), blue: CGFloat(240/255.0), alpha: CGFloat(1))
cell?.imageView?.layer.borderColor = UIColor(red: CGFloat(34/255.0), green: CGFloat(167/255.0), blue: CGFloat(240/255.0), alpha: CGFloat(1)).cgColor
cell?.imageView?.layer.borderWidth = 1.0
cell?.label?.text = labelText
cell?.label?.font = UIFont.boldSystemFont(ofSize: CGFloat(10.0))
return cell!
}
func horizontalContactsInsets() -> UIEdgeInsets {
return UIEdgeInsetsMake(10, 0, 10, 0)
}
func horizontalContactsSpacing() -> Int {
return 10
}
func contactSelected(at index: Int) {
print("selectedAtContactIndex - index : %zu option : %zu ")
}
func item(_ item: Int, selectedAtContactIndex index: Int) {
print("selectedAtContactIndex - index : \(index) option : \(item) ")
}
// MARK: - Generate Data Methods
func getUserName(at index: Int) -> String {
var array: [Any] = ([FullNameArray] as NSArray) as! [Any]
return array[index] as! String
}
func getImageName(at index: Int) -> String {
var array: [Any] = ["image1", "image2", "image3", "image4", "image5", "image6", "image7", "image8", "image9", "image10", "image1", "image2", "image3", "image4", "image5", "image6", "image7", "image8", "image9", "image10", "image1", "image2", "image3", "image4", "image5", "image6", "image7", "image8", "image9", "image10"]
return array[index] as! String
}
}
Где все методы делегата 'collectionView' и источники данных? Вы возвращаете ячейку вне «cellForItemAt» и т. Д. Является ли этот псевдокод или реальным? – garrettmurray
это пользовательский вид коллекции. Его здесь называют – john
func getUserName (по индексу: Int) -> String { var array: [Any] = FullNameArray return array [index] as! String } – john