2014-10-10 32 views
0

我有一个自定义视图(.xib和.swift),我想在不同的ViewControllers中使用它并作为自定义的cellview。 事情是我不知道该怎么做:P。任何人都可以请帮我解决这个问题吗?使用swift在ViewController中使用UIView

我的自定义视图是RestaurantVie,我有标签和图片: ` 类RestaurantView:UIView的{

@IBOutlet var view: UIView! 

@IBOutlet weak var imgLogo: UIImageView! 
@IBOutlet weak var imgRating: UIImageView! 

@IBOutlet weak var lblName: UILabel! 
@IBOutlet weak var lblComments: UILabel! 
@IBOutlet weak var lblMinimumOrder: UILabel! 
@IBOutlet weak var lblDeliveryCost: UILabel! 
@IBOutlet weak var lblStatus: UILabel! 

/* 
// Only override drawRect: if you perform custom drawing. 
// An empty implementation adversely affects performance during animation. 
override func drawRect(rect: CGRect) 
{ 
    // Drawing code 
} 
*/ 

} `

我希望把他们在RestaurantViewcontroller:

` class RestaurantViewController:UIViewController {

@IBOutlet weak var restaurant: RestaurantView! 

override func viewDidLoad() { 
    super.viewDidLoad() 
    let subviewArray = NSBundle.mainBundle().loadNibNamed("RestaurantView", owner: self, options: nil) 
    let filtersView : RestaurantView = subviewArray[0] as RestaurantView 
    self.view.addSubview(filtersView) 

    // Do any additional setup after loading the view. 
} 

`

但是,当我运行该应用程序,它崩溃。显示消息:

*由于未捕获异常'NSUnknownKeyException',原因:'[setValue:forUndefinedKey:]:该类不是符合密钥imgLogo密钥的密钥值。 *第一掷调用堆栈:

等....

回答

1

每个视图必须有一个所有者。假设你创建了一个名为CustomView的UIView的子类。然后你创建了具有相同名称的Xib文件。

1)输入您的Xib文件,选择顶视图,并在身份检查器中设置CustomView类。现在,您的Xib文件中的视图将链接到您的CustomView swift文件。

2)要实例化此视图,您需要视图的所有者。在大多数情况下,车主是一个视图控制器,因此,在您的视图控制器,你可以使用这个片段:

let subviewArray = NSBundle.mainBundle().loadNibNamed("CustomView", owner: self, options: nil) 
let filtersView : CustomView = subviewArray[0] as CustomView 
self.view.addSubview(filtersView) 

希望这有助于!

+1

***由于未捕获的异常'NSUnknownKeyException',原因:'[ setValue:forUndefinedKey:]:该类不是符合密钥imgLogo密钥的密钥值。 ***第一次掷出调用堆栈: – Opticon 2014-10-10 16:24:01

相关问题