UITableView自定义类以编程方式?

时间:2012-05-15 09:05:26

标签: objective-c ios xcode uitableview interface-builder

我想知道这是怎么回事: enter image description here

可以通过编程方式完成吗?它只是设置uitableview数据源并委托给FadingTableView类吗?通过在IB中设置自定义类到底是怎么回事?

感谢。

4 个答案:

答案 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并不意味着datasourcedelegate已连接。

要在代码中执行相同的操作,您必须从xib文件中删除TableView并创建它,例如在使用viewDidLoad表示该xib文件的ViewController的[[FadingTableView alloc] init…]中,手动设置frame,外观,delegatedatasource和所有其他属性。

答案 3 :(得分:0)

您可以使用object_setClass(tableView, [CustomClass class]);,并且必须包含#include <objc/runtime.h>

相关问题