是否可以在界面构建器中连接CustomViews的delegate和dataSource?

时间:2013-08-03 13:39:01

标签: ios objective-c

在“界面”构建器中,如果我右键单击一个tableView,我会选择委托和dataSource出口,有时我们连接到文件的所有者,在大多数情况下是实现这些协议的View Controller,

如何为具有委托和数据源属性的自定义视图获取类似选项?

3 个答案:

答案 0 :(得分:17)

您需要满足以下条件:

  1. 视图的Custom Class应在Interface Builder中设置为自定义视图的类名(通过Identity Inspector)。如果您的委托或dataSource对象也是自定义视图,还要确保该视图的自定义类已设置
  2. 自定义类的@interface应使用IBOutlet修饰其委托和dataSource属性。例如,@property (nonatomic, weak) IBOutlet id <SomeProtocol> delegate;
  3. 如果您为委托或dataSource声明了协议,则应将要用作委托或dataSource的目标对象声明为实现该协议

答案 1 :(得分:1)

创建自定义代理

@objc protocol CustomDelegate: class {
func itemSelected(_ success: Bool)
}

创建自定义委托的自定义类和属性(确保在属性声明期间添加@IBOutlet),

class CustomView: UIView {
@IBOutlet weak var cDelegate: CustomDelegate!
//...
//...
//...
}

现在,转到要添加此自定义视图的Storyboard,Take a UIView并更改类,然后右键单击它,您将能够看到您声明的属性(“cDelegate”)。请参阅图片以便更好地理解,

enter image description here

答案 2 :(得分:-1)

您可以按照以下步骤实现此目的。

  1. 创建UIview的新子类<​​/ li>
  2. 在.h文件中设置tableview委托和数据源属性,如

    UIViewController

  3. 然后在.m文件中实现委托和数据源协议。像往常一样。

  4. 行。现在在视图控制器中将视图拖到界面构建器中或以编程方式创建实例。

  5. 将视图的类设置为您创建的子类。 (在界面构建器右侧);

  6. 然后在此视图中放置一个UITableView。并将连接拖到其父UIview并选择数据源和委托。

  7. 那就完成了你的UIview子类将充当tableview的数据源和委托..