1

我想知道这是怎么回事: 在此处输入图像描述

可以以编程方式完成吗?它只是设置 uitableview 数据源并委托给FadingTableView类吗?在 IB 中设置自定义类到底发生了什么?

谢谢。

4

4 回答 4

3

在这里,您告诉 IB 表视图实例实际上是FadingTableView.
如果您想以编程方式创建此表视图,请使用这些行

FadingTableView *tableView = [[FadingTableView alloc] init.....];

为什么在 IB 中设置该类是因为 IB 具有内置对象,UITableView但您想要 IB 中不存在的表视图,因此您将类名放在那里,以便它创建实例FadingTableView而不是UITableView.
不,它不用于连接数据源或委托。

于 2012-05-15T09:17:34.977 回答
0

这样做是使用您在源代码中提供的 UITableView 的子类(显然),并在加载 nib 时实例化它。IT 并不意味着datasource并且delegate是相互关联的。

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

于 2012-05-15T09:23:24.677 回答
0

请详细说明您的问题,因为它并不表示它的目的..我认为您是在询问通过 xib 连接数据源和委托和通过类以编程方式声明它之间的区别。它们之间没有太大区别,但如果你在逻辑上看到 IBAction 和 IBOutlet 只是让编译器知道对象已经通过接口生成器定义的标识符(现在在更高版本的 xCode 中与 xcode 集成)。IBAction 被定义为 void 而 IBOutlet 刚刚定义。Apple的定义如下: -

#ifndef IBOutlet
#define IBOutlet 
#endif  

#ifndef 
IBAction #define 
IBAction void 
#endif

两者都充当编译器的标识符,仅此而已。它只是告诉编译器某些方法是通过接口构建器定义的。

于 2012-05-15T09:15:30.047 回答
0

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

于 2014-04-16T07:08:18.770 回答