0

如何在构建时使用单个#define 数字控制多个 UITableView 的数量?

我的应用程序目前需要 4 个 UITableView。后来,这个数字会增加,所以我想在构建时用一个 #define 来控制这个数量。

但是当我在 @property 声明中使用数组时出现错误:

#define TOTAL_TX_CHANNELS  4

@interface blah() <UITableViewDataSource, UITableViewDelegate CBPeripheralDelegate>
{
}

@property (strong, nonatomic) UITableView* channel_tableView[ TOTAL_TX_CHANNELS ] ;

有什么诀窍?我应该使用 NSArray 还是什么?

4

4 回答 4

0

是的,使用NSArray.

如果在 Interface Builder 中配置,您可以使用:

@property (weak, nonatomic) IBOutletCollection (UITableView) NSArray * tableViews;      
于 2013-05-23T14:57:19.507 回答
0

为什么你需要控制 UITableViews 的数量?如果你必须这样做,你可以做一些数学运算。

int adder = 4;
int currentNumberOfTvs = 4;

//Do some logic, that will add the number of current table views

if (...) //Test if user has added, or however, if another table view was added, 
{
 adder++;//now adder = 5. So you have a current count of how many table views there are
}

希望有帮助:)

于 2013-05-23T15:39:28.277 回答
0

我同意其他人的观点,这是一个糟糕的实现。韦恩的回答非常好。

但是,仍然可以以这种方式实现它,只需确保将属性声明为

@property (assign, nonatomic) UITableView** channel_tableView;

引用计数仅适用于 Obj-C 对象,但您在此处创建了一个 C 数组。

请注意,您必须使用malloc来分配存储空间。

如果您不想这样做malloc,请将其实现为 ivar:

@interface Blah {
    UITableView* channel_tableView[4];
}
@end
于 2013-05-23T15:46:00.013 回答
0

解决方案不是使用属性数组,而是在实现范围内使用 UITextView 数组,.m ...

UITextView* channel_pipe_textview[TOTAL_TX_CHANNELS];

然后,在函数 viewDidLayoutSubviews 中,我为每个通道创建了一个 UITableView,并添加了用于初始化单元格的标准函数,所有这些都遵循 Apple 出色的 UITableView 编程指南。

它完美地工作,完全独立于故事板:我得到四个垂直并排的列,显示有关频道上每个设备的任何类型的图像和文本详细信息,具有滚动功能,每个频道允许任意数量的设备。

Apple UITableView 编程指南还包含仅在运行时以编程方式生成 UITableView 的教程和示例代码。

于 2013-05-24T13:04:18.757 回答