7

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

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

4

3 回答 3

17

您需要满足以下条件:

  1. 视图Custom Class应该设置为您在 Interface Builder 中自定义视图的类名(通过 Identity Inspector)。如果您的委托或数据源对象也是自定义视图,还要确保设置了该视图的自定义类
  2. 您的@interface自定义类应该用IBOutlet. 例如,@property (nonatomic, weak) IBOutlet id <SomeProtocol> delegate;
  3. 如果您为委托或数据源声明了协议,则应将要用作委托或数据源的目标对象声明为实现该协议
于 2013-08-03T13:42:57.727 回答
2

创建您的自定义委托,

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

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

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

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

在此处输入图像描述

于 2018-05-29T11:38:33.813 回答
-1

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

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

    UIViewController

  3. 然后在您的 .m 文件中实现委托和数据源协议。像你通常做的那样。

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

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

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

  7. 现在一切都完成了,您的 UIview 子类将充当 tableview 的数据源和委托..
于 2013-08-03T13:48:39.720 回答