2016-10-01 119 views
0

我创建了一个自定义的UIView自定义的UIView不显示任何

import UIKit 

class IndicatorView: UIView { 

    var image_view_indicator: UIImageView! 
    var label_indicator: UILabel! 

    required init(coder decoder: NSCoder) { 
     super.init(coder: decoder)! 
    } 

    init(frame:CGRect, imageName: String, indicatorValue: String) 
    { 
     super.init(frame: frame) 
     self.frame = frame 
     image_view_indicator = UIImageView(frame: CGRect(x: 0, y: 0, width: 15, height: 15)) 
     image_view_indicator.image = UIImage(named: imageName) 
     self.addSubview(image_view_indicator) 
     self.bringSubviewToFront(image_view_indicator) 

     label_indicator = UILabel(frame: CGRect(x: image_view_indicator.frame.size.width + 3, y: 0, width: 25, height: 15)) 
     label_indicator.text = indicatorValue 
     label_indicator.textColor = UIColor.blackColor() 
     self.addSubview(label_indicator) 
     self.bringSubviewToFront(label_indicator) 
    } 

} 

这是我的电话从UIViewController

view_indicator_friends = IndicatorView(frame: view_indicator_friends.frame, imageName: "friend.png", indicatorValue: "20") 

我交叉检查IBOutlet连接。他们似乎很好。
但是在自定义视图中没有任何显示。

+0

您正在使用便利初始值设定项,但未使用便捷关键字。 – Dasem

回答

0

当你从Xib自定义视图通过IBOutlet连接,那么您的自定义init不会调用的,为什么你image_view_indicatorlabel_indicator不创建。这就是为什么你的自定义视图不能正确显示。一种解决方案是在awakeFromNib方法中使用init(frame:CGRect, imageName: String, indicatorValue: String)方法实现您的代码。

override func awakeFromNib() { 
     let frame = self.frame 
     image_view_indicator = UIImageView(frame: CGRect(x: 0, y: 0, width: 15, height: 15)) 
     image_view_indicator.image = UIImage(named: imageName) 
     self.addSubview(image_view_indicator) 
     self.bringSubviewToFront(image_view_indicator) 

     label_indicator = UILabel(frame: CGRect(x: image_view_indicator.frame.size.width + 3, y: 0, width: 25, height: 15)) 
     label_indicator.text = indicatorValue 
     label_indicator.textColor = UIColor.blackColor() 
     self.addSubview(label_indicator) 
     self.bringSubviewToFront(label_indicator) 

     } 
+0

我没有自定义视图的xib。这只是一个迅速的文件 – Nitish

+0

然后你把IBOutlet连接器连接到哪个文件? – iMuzahid

+0

在视图控制器的视图中,我添加了一个UIView并将它的类设置为IndicatorView(自定义)。并将此视图设置为视图控制器中的IBOutlet – Nitish