Objective c 从NSArray创建自定义无序列表

Objective c 从NSArray创建自定义无序列表,objective-c,uiview,xib,addsubview,Objective C,Uiview,Xib,Addsubview,我正在尝试构建一个自定义无序列表(带有自定义复选标记“项目符号”)。此列表的数据是一个包含NSStrings的NSArray 我的想法是向UIView添加多个子视图(基于xib文件)。xib文件有一个UIImageView(选中标记)和一个UIlabel(用于设置文本) 我尝试在NSArray中循环,并在列表容器中添加一个自定义UIView: for (id line in currentDeal.dealDescriptionArray) { NSLog(line); Cus

我正在尝试构建一个自定义无序列表(带有自定义复选标记“项目符号”)。此列表的数据是一个包含
NSString
s的
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];

}
然而,这只显示了数组的最后一项,我想我只是在向同一个对象添加指针,但我不知道如何创建“新”实例


有人知道如何解决这个问题吗?

您正在创建新的实例,只是没有将它们放置在一起,使它们彼此重叠(因此您只能看到最后一个实例)


可以在添加为子视图之前设置框架,也可以在添加为子视图之后添加约束,以便适当地布置视图。您可以通过增加循环中的计数器来实现这一点,以表示父视图中的位置偏移。

Ah,谢谢!这是有道理的。子视图可以具有不同的高度(当字符串太长时,它将覆盖多行)。因此,我想我将不得不在约束条件下工作。我应该在一个子视图和上一个子视图之间创建约束,还是可以/更好地获取每个子视图的高度并计算相对于容器的位置?是的,最好在视图之间设置约束,并允许内部内容大小设置高度