【问题标题】:create new UILabel when conditions are met looping through NSArray满足条件时通过 NSArray 循环创建新的 UILabel
【发布时间】:2019-01-07 18:27:34
【问题描述】:

我有一个 NSArray,它的各个部分除以 ,。

这个数组更长

citiesArray10000 = [NSArray arrayWithObjects:
                            @"33.572162&-112.087966&Phoenix&Arizona",
                            @"32.154289&-110.871062&735&Tucson Arizona ",
                            @"33.401926&-111.717379&Mesa&Arizona",
                            @"33.282874&-111.854943&Chandler&Arizona",
                            nil];

我遍历这些以查看它们是否满足某些条件。

[citiesArray10000 enumerateObjectsUsingBlock:^(id object, NSUInteger idx, BOOL *stop) {
        // do something with object
        NSArray *coorArray = [object componentsSeparatedByString:@"&"];
        NSString *firstString = [coorArray objectAtIndex:0];
        NSString *secondString = [coorArray objectAtIndex:1];
        NSString *thirdString = [coorArray objectAtIndex:2];
        NSString *fourthString = [coorArray objectAtIndex:3];

if (fabs(crnLoc.coordinate.latitude - latitude) <= 1) {
            if (abs(crnLoc.coordinate.longitude - longitude <= 1)) {

                self.label.text = fourthString;
            }
        }

标签会根据满足条件的对象的坐标浮动在屏幕表面

self.label.frame = CGRectMake(160,(((self.mheading-90)-β)*-5.688)+200, 30, 200);

self.label2.frame = CGRectMake(160,(((self.mheading-90)-β)*-5.688)+200, 30, 200);

其中 β 根据坐标有不同的值。

问题在于,如果数组中的多个对象满足条件,我需要创建另一个标签并将其文本设为该对象的第四个字符串。然后当不再满足条件时删除该标签。有没有办法做到这一点?

【问题讨论】:

  • 那个标签在哪里?使用 UITableView 怎么样?另一个标签应该放在哪里?更多?在它下面?等等。

标签: ios objective-c nsarray enumerate


【解决方案1】:

如何使用标签? 当你遍历citysArray10000数组时,我认为你可以在uilabel中添加一个标签,然后当条件不再满足时,你可以通过标签找到标签并删除标签。

[citiesArray10000 enumerateObjectsUsingBlock:^(id object, NSUInteger idx, BOOL *stop) {
        // do something with object
        NSArray *coorArray = [object componentsSeparatedByString:@"&"];
        NSString *firstString = [coorArray objectAtIndex:0];
        NSString *secondString = [coorArray objectAtIndex:1];
        NSString *thirdString = [coorArray objectAtIndex:2];
        NSString *fourthString = [coorArray objectAtIndex:3];

if (fabs(crnLoc.coordinate.latitude - latitude) <= 1) {
            if (abs(crnLoc.coordinate.longitude - longitude <= 1)) {

                UILabel *label = (UILabel *)[self.view viewWithTag:idx];

                label.text = fourthString;

                // add the label to the view ...
            }
        }
    }

【讨论】:

  • 我试过这个,但我遇到的问题是一次添加一个标签,每个标签都有不同的文本,在屏幕上的位置。我该怎么做?
猜你喜欢
  • 2022-01-11
  • 1970-01-01
  • 1970-01-01
  • 2022-01-02
  • 2017-02-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多