使用笔尖的自定义初始化程序?

时间:2013-03-25 22:22:29

标签: ios objective-c cocoa-touch

我正在创建一个自定义UICustomView,它是UIView的子视图。我可以在其中创建一个自定义指定的初始化程序,它将要求委托和数据源。但只有当控件使用者以编程方式创建控件时才会调用此方法。

但是,我想提供基本的布局支持,即。应该可以将空的UIView放入任何NIB文件中,然后将其在Identity Inspector中的类更改为UICustomView。以类似的方式,您可以将其他库存Apple控件放入笔尖。

但是,我将如何强制消费者提供委托和数据源?

4 个答案:

答案 0 :(得分:1)

不幸的是,没有办法从nib文件中使用自定义初始值设定项。最常见的是,需要数据源和委托的视图使用视图类中的IBOutlet属性进行连接,或者在呈现视图之前在视图控制器中设置它们的属性。

如果要强制使用者提供委托和数据源,您始终可以在-viewDidLoad方法中放置一个断言,并确保它们已连线(并在您处理时处理正确的协议)重新认识。)

答案 1 :(得分:1)

如果我正确理解您的问题,您可以使用initWithCoder执行您想要的操作:这将被称为来自xib或故事板的视图。

答案 2 :(得分:0)

正如@gaige所说,只需在自定义视图类中获取dataSource和delegate的IBOutlet属性。此外,您可以提供指定的初始化程序,以便在以编程方式创建时设置这些值。如果有插座属性,您可以在界面构建器中连接它们,就像我们使用普通的TableView一样。

答案 3 :(得分:0)

我认为解决问题最常见,最快捷的方法是自定义viewDidLoad方法在与视图关联的控制器的viewdidload方法中初始化类的属性。