0

如果用户提供一个数字,例如 8,我将如何在视图上放置八个标签?

例如:

int userGivenNumber = textfield.text;

for (int labelNumber=1; i<=userGivenNumber; i++) {

    UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(50, *previousLabel*.frame.origin.y + 20)];

}

您将如何获得 的位置previousLabel?此外,如果用户想要编辑标签,例如标签 3,我将如何编辑此标签?

问题是我不知道他们在编码时要放置多少标签,而且我无法跟踪标签,因为它们被称为label. 你有什么想法?你明白我在问什么吗?谢谢你的帮助。

4

3 回答 3

3
- (void)addLabels {

    CGFloat offset = 0;

    // labels is NSMutableArray property

    labels = [[NSMutableArray alloc] initWithCapacity:8];

    for (int i = 0; i < 8; i++) {
        UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(0, offset, 320, 20)];
        [self.view addSubview:label];
        [labels addObject:label];

        offset += label.frame.size.height;
    }

}

编辑:就像 jerrylroberts 所说,要从代码中的其他地方访问标签数组,您应该将其声明为属性。

于 2012-06-20T19:38:35.523 回答
1

所以你可以像这样添加视图:

int userGivenNumber = [textfield.text intValue];

for (int labelNumber=1; i<=userGivenNumber; i++) {

    UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(50, *previousLabel*.frame.origin.y + 20)];

    [self.view addSubview:label];

    [label release];

}

如果您想跟踪它们,您可以创建一个可变数组作为属性,然后在添加到子视图之前将每个标签添加到数组中;

界面

@property (nonatomic, retain) NSMutableArray *addedLabels;

执行

@synthesize addedLabels=_addedLabels;

- (void)viewDidLoad

    [super viewDidLoad];

    // Create your array to hold labels

    NSMutableArray *addedLabels = [[NSMutableArray alloc] initWithCapacity:0];

    self.addedLabels = addedLabels;

    [addedLabels release];

    // NOW put your code

    int userGivenNumber = [textfield.text intValue];

    for (int labelNumber=1; i<=userGivenNumber; i++) {

        UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(50, *previousLabel*.frame.origin.y + 20)];

        [self.view addSubview:label];

        [addedLabels addObject:label];

        [label release];

    }
}

现在,如果您有索引,您可以轻松访问您添加的任何标签。希望这可以帮助

于 2012-06-20T19:45:08.857 回答
0

只需在循环外保留对位置 (CGPoint) 的引用,但在循环内将其更新为当前标签的位置。当您分配下一帧时,请根据标签的宽度和大小进行操作,并且不要忘记更新 CGPoint 的参考。

于 2012-06-20T19:38:13.903 回答