是否可以在界面构建器中连接CustomViews的delegate和dataSource?
在Interface builder中,如果我右键单击tableView,我会获得委托和dataSource出口的选项,有时我们连接到文件的所有者,在大多数情况下是实现这些协议的View Controller,
如何为具有委托和数据源属性的自定义视图获取类似选项?
您需要满足以下条件:
- 应在Interface Builder中将视图的
Custom Class
设置为自定义视图的类名(通过Identity Inspector)。 如果您的委托或dataSource对象也是自定义视图,还要确保已设置该视图的自定义类 - 自定义类的
@interface
应该使用IBOutlet
修饰其delegate和dataSource属性。 例如,@property (nonatomic, weak) IBOutlet id
delegate; - 如果您为委托或dataSource声明了协议,则应将要用作委托或dataSource的目标对象声明为实现该协议
创建自定义委托,
@objc protocol CustomDelegate: class { func itemSelected(_ success: Bool) }
创建自定义委托的自定义类和属性(确保在属性声明期间添加@IBOutlet),
class CustomView: UIView { @IBOutlet weak var cDelegate: CustomDelegate! //... //... //... }
现在,转到要添加此自定义视图的Storyboard,Take a UIView并更改类,然后右键单击它,您将能够看到您声明的属性(“cDelegate”)。 查看图片以便更好地理解,
您可以通过执行以下步骤来实现此目的。
- 创建UIview的新子类
-
在.h文件中设置tableview委托和datasource属性
的UIViewController
-
然后在.m文件中实现委托和数据源协议。 像往常一样。
-
好。 现在在视图控制器中将视图拖到界面构建器中或以编程方式创建实例。
-
将视图的类设置为您创建的子类。 (在界面构建器右侧);
-
然后在这个视图中放入一个UITableView。 并将连接拖动到其父UIview并选择数据源和委托。
- 这就完成了你的UIview子类将充当tableview的数据源和委托。