我有一个课程,我们称之为MyView
,用扩展UIView
的Swift 3编写。
我有两个视图.xib
s,我们称之为:{
* MyViewStandalone.xib
* MyViewEmbedded.xib
在两个视图中,行为应该是100%相同,但它们看起来完全不同。
每个笔尖中有四个@IBOutlet
个(ImageView
,一个UIView
和两个UILabel
s。
每当我尝试将“文件所有者”设置为MyView
时,我都会收到此运行时错误:
*** Terminating app due to uncaught exception 'NSUnknownKeyException', reason: '[<Blah.MyView 0x7f8e7d4427d0> setValue:forUndefinedKey:]: this class is not key value coding-compliant for the key errorBannerLabel.'
到目前为止我所做的(但不满意)是将MyView
子类化为MyViewStandalone.swift
和MyViewEmbedded.swift
,它们都拥有自己的@IBOutlet
个。
然后我添加了四个吸气剂:
func getErrorLabel() -> UILabel
func getHeroImage() -> UIImageView
等...
然后,在基类中,不是直接调用视图元素,而是通过这些getter完成所有交互。
我的第一个想法是在基类中实现getter并将它们标记为 Abstract
,但我们在Swift中没有。
你会怎么做?这通常是怎么做的? 酷孩子如何解决这样的问题?