#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
}