Ios 是否可以在interface builder中连接CustomView的委托和数据源?

Ios 是否可以在interface builder中连接CustomView的委托和数据源?,ios,objective-c,Ios,Objective C,在Interface builder中,如果我右键单击一个tableView,我会得到委托和数据源出口的选项,有时我们会连接到文件的所有者,在大多数情况下,该所有者是实现这些协议的视图控制器 如何为具有委托和数据源属性的自定义视图获取类似选项?您需要满足以下条件: 视图的自定义类应在Interface Builder中设置为自定义视图的类名(通过标识检查器)。如果委托或数据源对象也是自定义视图,还请确保已设置该视图的自定义类 自定义类的@接口应使用IBOutlet装饰其委托和数据源属性。例如,@

在Interface builder中,如果我右键单击一个tableView,我会得到委托和数据源出口的选项,有时我们会连接到文件的所有者,在大多数情况下,该所有者是实现这些协议的视图控制器


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

您需要满足以下条件:

  • 视图的
    自定义类
    应在Interface Builder中设置为自定义视图的类名(通过标识检查器)。如果委托或数据源对象也是自定义视图,还请确保已设置该视图的自定义类
  • 自定义类的
    @接口
    应使用
    IBOutlet
    装饰其委托和数据源属性。例如,
    @property(非原子,弱)IBOutlet id委托
  • 如果为委托或数据源声明了协议,则要用作委托或数据源的目标对象应声明为实现该协议

  • 您可以通过以下步骤来实现这一点

  • 创建UIview的新子类
  • 在.h文件中,将tableview委托和数据源属性设置为

    UIViewController

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

  • 嗯。现在,在视图控制器中,将视图拖动到interface builder中或以编程方式创建实例

  • 将视图的类设置为已创建的子类。(在界面生成器右侧)

  • 然后在此视图中放置一个UITableView。并将连接拖动到其父UIview,然后选择datasource和Delegate

  • 现在所有这些都完成了,您的UIview子类将充当tableview的数据源和委托

  • 创建自定义委托

    @objc protocol CustomDelegate: class {
    func itemSelected(_ success: Bool)
    }
    
    创建自定义类和自定义委托的属性(确保在属性声明期间添加@IBOutlet)

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


    我错过了第二个条件!是的,
    IBAction
    IBOutlet
    只是预处理器宏,Interface Builder使用这些宏来确定哪些变量/属性允许为插座或操作布线。它们对编译后的代码没有任何影响。那么它还应该显示其他属性,这些属性是IBOutlets?应该是,如果它们被正确声明的话。您将如何在swift中键入nr2?
    class CustomView: UIView {
    @IBOutlet weak var cDelegate: CustomDelegate!
    //...
    //...
    //...
    }