2015-01-25 2 views
0

У меня есть этот UIView подкласс, который возвращает вид с градиентом фонаНастройка UIView подкласс как IBOutlet в подклассе UITableViewCell

class GradientView: UIView { 

override func drawRect(rect: CGRect) { 

    var currentContext = UIGraphicsGetCurrentContext() 

    CGContextSaveGState(currentContext); 

    var colorSpace = CGColorSpaceCreateDeviceRGB() 

    var startColor = UIColor(red: 195/255, green: 33/255, blue: 121/255, alpha: 1); 
    var startColorComponents = CGColorGetComponents(startColor.CGColor) 
    var endColor = UIColor(red: 134/255, green: 25/255, blue: 101/255, alpha: 1); 
    var endColorComponents = CGColorGetComponents(endColor.CGColor) 

    var colorComponents 
    = [startColorComponents[0], startColorComponents[1], startColorComponents[2], startColorComponents[3], endColorComponents[0], endColorComponents[1], endColorComponents[2], endColorComponents[3]] 

    var locations:[CGFloat] = [0.0, 1.0] 

    var gradient = CGGradientCreateWithColorComponents(colorSpace,&colorComponents,&locations,2) 

    var startPoint = CGPointMake(0, self.bounds.height) 
    var endPoint = CGPointMake(self.bounds.width, self.bounds.height) 

    CGContextDrawLinearGradient(currentContext,gradient,startPoint,endPoint, 0) 

    CGContextRestoreGState(currentContext); 
} 

В Interface Builder, в одной из ячеек прототипа UITableView, я есть GradientView. Я перетаскиваю ctrl в подклассу UITableViewCell прототипа ячейки градиента как IBOutlet.

class GenericResultsHeaderCell: UITableViewCell { 

    @IBOutlet weak var headerLabel: UILabel! 
    @IBOutlet weak var headerIcon: UIImageView! 
    @IBOutlet var backgroundView: GradientView! 

} 

Однако я получаю: Cannot override mutable property 'backgroundView' of type 'UIView?' with covariant type 'GradientView!'

Что происходит здесь не так?

ответ

0

Я думаю, ваша проблема в том, что UITableViewCell уже имеет свойство, называемое backgroundView, и ваш IBOutlet переопределит его.

For reference

Что я хотел бы сделать это, чтобы переопределить назначенный Инициализатор для UIStoryboard экземпляров клеток. Мой подкласс, вероятно, выглядеть следующим образом:

class GenericResultsHeaderCell: UITableViewCell { 

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

     self.backgroundView = GradientView(frame: self.frame) 
    } 
} 

Имейте в виду, что backgroundView будет под видом контента, так что вы не можете видеть это.

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