我想知道这是怎么回事:
可以以编程方式完成吗?它只是设置 uitableview 数据源并委托给FadingTableView
类吗?在 IB 中设置自定义类到底发生了什么?
谢谢。
我想知道这是怎么回事:
可以以编程方式完成吗?它只是设置 uitableview 数据源并委托给FadingTableView
类吗?在 IB 中设置自定义类到底发生了什么?
谢谢。
在这里,您告诉 IB 表视图实例实际上是FadingTableView
.
如果您想以编程方式创建此表视图,请使用这些行
FadingTableView *tableView = [[FadingTableView alloc] init.....];
为什么在 IB 中设置该类是因为 IB 具有内置对象,UITableView
但您想要 IB 中不存在的表视图,因此您将类名放在那里,以便它创建实例FadingTableView
而不是UITableView
.
不,它不用于连接数据源或委托。
这样做是使用您在源代码中提供的 UITableView 的子类(显然),并在加载 nib 时实例化它。IT 并不意味着datasource
并且delegate
是相互关联的。
要在代码中执行相同的操作,您必须从 xib 文件中删除 TableView 并在viewDidLoad
表示该 xib 文件的 ViewController 中使用、手动[[FadingTableView alloc] init…]
设置frame
、外观和所有其他属性来创建它。delegate
datasource
请详细说明您的问题,因为它并不表示它的目的..我认为您是在询问通过 xib 连接数据源和委托和通过类以编程方式声明它之间的区别。它们之间没有太大区别,但如果你在逻辑上看到 IBAction 和 IBOutlet 只是让编译器知道对象已经通过接口生成器定义的标识符(现在在更高版本的 xCode 中与 xcode 集成)。IBAction 被定义为 void 而 IBOutlet 刚刚定义。Apple的定义如下: -
#ifndef IBOutlet
#define IBOutlet
#endif
#ifndef
IBAction #define
IBAction void
#endif
两者都充当编译器的标识符,仅此而已。它只是告诉编译器某些方法是通过接口构建器定义的。
您可以使用object_setClass(tableView, [CustomClass class]);
并且必须包括#include <objc/runtime.h>