2017-01-21 2 views
0

Я работаю с UITableViewCell, у которого есть UICollectionView внутри. Все отлично работает, используя эту структуру:UICollectionViewDelegate и UICollectionViewDataSource методы, которые не называются

class PostCell: UITableViewCell, UICollectionViewDelegate, UICollectionViewDataSource {} 

Однако, когда я начинаю извлекать UICollectionViewDelegate и UICollectionViewDataSource к другому классу

class PostCell: UITableViewCell { 
    @IBOutlet weak var collectionView: UICollectionView! 

    public func populate(users: [User]) { 
     UsersManager(users: users, collectionView: collectionView) 
    } 
} 
public class UsersManager: NSObject, UICollectionViewDelegate, UICollectionViewDataSource { 
    private var users: [User]! 
    private var collectionView: UICollectionView! 

    init(users: [User], collectionView: UICollectionView) { 
     super.init() 

     let nib = UINib(nibName: UserCell.IDENTIFIER, bundle:nil) 
     collectionView.register(nib, forCellWithReuseIdentifier: UserCell.IDENTIFIER) 
     collectionView.delegate = self 
     collectionView.dataSource = self 

     collectionView.reloadData() 
    } 
} 

методы делегата не называются.

collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell 
collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int 
numberOfSections(in collectionView: UICollectionView) -> Int 

Я пропусканием CollectionView к UsersManager(). Я звоню как:

collectionView.delegate = self 
collectionView.dataSource = self 

в UsersManager()

Как вы думаете, это проблема?

+0

где вы создаете экземпляр UserManager? у вас должен быть экземпляр UserManager – karthikeyan

+0

Обновлен мой @karthikeyan. Спасибо за помощь. = D – benjtupas

+0

Я подозреваю, что NSObject Class запросил у вас кодера и декодера, проверьте эту ссылку https://github.com/macelangelo/HorizontalCollectionViews . Ваша цель достигается таким же образом, используя UIView. – karthikeyan

ответ

1
class PostCell: UITableViewCell { 
    @IBOutlet weak var collectionView: UICollectionView! 

    var usersManager:UsersManager? // add this line. 

    public func populate(users: [User]) { 
     usersManager = UsersManager(users: users, collectionView: collectionView) 
    } 
} 
+0

Эти проблемы решены! – benjtupas

+0

Спасибо, Юнь ЧЕН! – benjtupas

+0

@benjtupas, добро пожаловать! –

Смежные вопросы