从 NSArray 创建自定义无序列表
create custom unordered list from NSArray
我正在尝试构建自定义无序列表(带有自定义复选标记 "bullets")。此列表的数据是包含 NSString
的 NSArray
。
我的想法是向 UIView 添加多个子视图(基于 xib 文件)。 xib 文件有一个 UIImageView
(复选标记)和一个 UIlabel
(用于设置文本)。
我尝试遍历 NSArray
,并将自定义 UIView
添加到列表容器:
for (id line in currentDeal.dealDescriptionArray) {
NSLog(line);
CustomLineView *specView = [[[NSBundle mainBundle] loadNibNamed:@"customLineView" owner:self options:nil] objectAtIndex:0];
specView.specLabel.text = line;
[listContainer addSubview:specView];
}
但是,这只显示了数组的最后一项,我想我只是在添加指向同一对象的指针,但我不知道如何创建 "new" 个实例。
有人知道如何解决这个问题吗?
您正在创建新实例,只是没有对它们进行定位,因此它们都在彼此之上(因此实际上您只能看到最后一个)。
要么在添加为子视图之前设置框架,要么在添加为子视图之后添加约束,以便适当地布局视图。您可以通过在循环中递增 img 计数器来表示父视图中的位置偏移来执行此操作。
我正在尝试构建自定义无序列表(带有自定义复选标记 "bullets")。此列表的数据是包含 NSString
的 NSArray
。
我的想法是向 UIView 添加多个子视图(基于 xib 文件)。 xib 文件有一个 UIImageView
(复选标记)和一个 UIlabel
(用于设置文本)。
我尝试遍历 NSArray
,并将自定义 UIView
添加到列表容器:
for (id line in currentDeal.dealDescriptionArray) {
NSLog(line);
CustomLineView *specView = [[[NSBundle mainBundle] loadNibNamed:@"customLineView" owner:self options:nil] objectAtIndex:0];
specView.specLabel.text = line;
[listContainer addSubview:specView];
}
但是,这只显示了数组的最后一项,我想我只是在添加指向同一对象的指针,但我不知道如何创建 "new" 个实例。
有人知道如何解决这个问题吗?
您正在创建新实例,只是没有对它们进行定位,因此它们都在彼此之上(因此实际上您只能看到最后一个)。
要么在添加为子视图之前设置框架,要么在添加为子视图之后添加约束,以便适当地布局视图。您可以通过在循环中递增 img 计数器来表示父视图中的位置偏移来执行此操作。