iCarousel numberOfItemsInCarousel

#ios #swift #carousel

#iOS #swift #карусель

Вопрос:

Я использую модуль iCarousel в своем CollectionView. Представление карусели находится в моей ячейке UICollectionViewCell.

Мой код выглядит следующим образом.

 class CelebrityDetailHeaderCell: UICollectionViewCell, UITextFieldDelegate, SDCycleScrollViewDelegate, iCarouselDataSource, iCarouselDelegate {

@IBOutlet weak var backgroudLab: UILabel!
@IBOutlet weak var name_en: UILabel!
@IBOutlet weak var name_tw: UILabel!
@IBOutlet weak var intro: UILabel!
@IBOutlet weak var DetailImg: UIImageView!
@IBOutlet weak var iCarouselView: iCarousel!

let screenWidth = UIScreen.mainScreen().bounds.width
let screenHeight = UIScreen.mainScreen().bounds.height

override func awakeFromNib() {
    super.awakeFromNib()

    iCarouselView.delegate = self
    iCarouselView.dataSource = self

    iCarouselView.type = .Linear
}

func numberOfItemsInCarousel(carousel: iCarousel) -> Int {
    return 1
}
func carousel(carousel: iCarousel, viewForItemAtIndex index: Int, reusingView view: UIView?) -> UIView {
    let tempView = UIView(frame: CGRect(x: 0, y: screenWidth/2, width: screenWidth, height: screenWidth/2))
    tempView.backgroundColor = UIColor.redColor()
    return tempView
}
func carousel(carousel: iCarousel, valueForOption option: iCarouselOption, withDefault value: CGFloat) -> CGFloat {
    if option == iCarouselOption.Spacing {
        return 1.2
    }
    return value
}
  

}

Сообщение об ошибке выглядит следующим образом

Завершение работы приложения из-за неперехваченного исключения ‘NSInvalidArgumentException’, причина: ‘-[NSObject numberOfItemsInCarousel:]: нераспознанный селектор, отправленный экземпляру 0x7f99bb3734a0’

Я установил numberOfItemsInCarousel, почему сообщение об ошибке показало это. Кто-нибудь мне поможет? Спасибо.

Комментарии:

1. Потому что где-то это объект «NSObject», который получает инструкцию для вызова numberOfItemsInCarousel: , но не CelebrityDetailVC объект.

2. Как добавить iCarousel в collectionviewcell?

Ответ №1:

Посмотрите, вам нужно добавить метод dealloc в вашу ячейку. Поскольку ваша ячейка освобождается, а делегат iCarousel вызывает этот метод для некоторого освобожденного экземпляра, вот почему происходит сбой

напишите метод освобождения, подобный этому

 - (void)dealloc{
    iCarouselView.delegate = nil
    iCarouselView.dataSource = nil
 }