2015-06-19 3 views
2

У меня есть этот подкласс UICollectionViewCell, и я пытаюсь передать значение ячейке, когда я ее инициализирую.Параметр пропуска при инициализации UICollectionViewCell

class AddItemCell: UICollectionViewCell { 

    var addItemButton = UIButton() 
    var collectionElement : PFObject? 

    override init(frame: CGRect) { 
     super.init(frame: frame) 

     addItemButton = UIButton.buttonWithType(UIButtonType.Custom) as! UIButton 
     addItemButton.frame = CGRectMake(0, 0, 170, 300) 
     addItemButton.backgroundColor = UIColor.redColor() 
     addItemButton.addTarget(self, action: "addItemToCollectionElement:", forControlEvents: UIControlEvents.TouchUpInside) 
     addItemButton.setTitle("New Item", forState: UIControlState.Normal) 
     addItemButton.titleLabel!.font = UIFont(name: "Cochin-BoldItalic", size: 20) 
     self.addSubview(addItemButton) 
    } 

    init (frame: CGRect, passedCollectionElement : PFObject){ 
     self.collectionElement = passedCollectionElement 
     super.init(frame: frame) 
    } 

    func addItemToCollectionElement (sender : UIButton!) { 

    } 

    required init(coder aDecoder: NSCoder) { 
     super.init(coder: aDecoder) 
    } 
} 

Очевидно, что вызываемый метод является переопределенным. Есть ли способ вызвать второй/любой другой способ передачи значения переменной?

ответ

2

Если вы хотите инициализировать объект с некоторыми дополнительными параметрами и сделать переопределяется инициализация дозвонились, а вы должны будете использовать удобство инициализатору следующим образом:

convenience init (frame: CGRect, passedCollectionElement : PFObject){ 
    self.init(frame: frame) 
    self.collectionElement = passedCollectionElement 
} 

Таким образом, с помощью вызова let cell = AddItemCell(frame:someFrame, passedCollectionElement : someElement) будет инициализировать объект, вызывая как удобство, так и назначенные инициализаторы. Вы можете узнать больше об инициализации here

+1

Код создает ошибку на self.init (frame: frame). В нем говорится: «Отсутствует аргумент для параметра passCollectionElement при вызове» – Alessandro

+0

Если я делаю self.init (frame: frame, passCollectionElement: passCollectionElement), то первая строка вызывает ошибку: «использование self в инициализаторе делегата до того, как self.init вызывается», – Alessandro

+0

Отредактированный мой ответ: self.init (frame: frame) должен быть вызван перед установкой элемента коллекции –

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