我正在创建一个自定义UICustomView,它是UIView的子视图。我可以在其中创建一个自定义指定的初始化程序,它将要求委托和数据源。但只有当控件使用者以编程方式创建控件时才会调用此方法。
但是,我想提供基本的布局支持,即。应该可以将空的UIView放入任何NIB文件中,然后将其在Identity Inspector中的类更改为UICustomView。以类似的方式,您可以将其他库存Apple控件放入笔尖。
但是,我将如何强制消费者提供委托和数据源?
答案 0 :(得分:1)
不幸的是,没有办法从nib文件中使用自定义初始值设定项。最常见的是,需要数据源和委托的视图使用视图类中的IBOutlet属性进行连接,或者在呈现视图之前在视图控制器中设置它们的属性。
如果要强制使用者提供委托和数据源,您始终可以在-viewDidLoad
方法中放置一个断言,并确保它们已连线(并在您处理时处理正确的协议)重新认识。)
答案 1 :(得分:1)
如果我正确理解您的问题,您可以使用initWithCoder执行您想要的操作:这将被称为来自xib或故事板的视图。
答案 2 :(得分:0)
正如@gaige所说,只需在自定义视图类中获取dataSource和delegate的IBOutlet属性。此外,您可以提供指定的初始化程序,以便在以编程方式创建时设置这些值。如果有插座属性,您可以在界面构建器中连接它们,就像我们使用普通的TableView一样。
答案 3 :(得分:0)
我认为解决问题最常见,最快捷的方法是自定义viewDidLoad方法在与视图关联的控制器的viewdidload方法中初始化类的属性。