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