UILabel создан программно - найти его снова? - PullRequest
1 голос
/ 15 февраля 2011

В viewDidLoad я создал 26 программных меток UILabel (по одной на каждую букву в алфавите) и поместил буквы алфавита в каждую метку (A на первой, B на второй ...).

Позже я хотел бы найти одну конкретную метку (скажем, метку, содержащую букву «F»). Я знаю и букву, которую хочу найти, и ее индекс в алфавите (поэтому для F я знаю, что ее индекс равен 5, потому что F - 6-я буква в алфавите)

Как мне найти этот ярлык?

Конечно, я могу сделать 26 IBOutlets и сослаться на них, но это кажется такой проблемой.

Вот как я создаю ярлыки:

// set letters
letters = [[NSArray alloc] initWithObjects:@"A", @"B", @"C", @"D", @"E", @"F", @"G", @"H", @"I", @"J", @"K", @"L", @"M", @"N", @"O", @"P", @"Q", @"R", @"S", @"T", @"U", @"V", @"W", @"X", @"Y", @"Z", nil];

int positionX = 0;
int positionY = 0;
for(int i = 0; i < [letters count]; i++) {
    /* a lot of positioning stuff is here (positionX and positionY is set. I have removed this to make the code look cleaner */ 

    UILabel *letterLabel = [[UILabel alloc] initWithFrame:CGRectMake(positionX, positionY, 50, 50)];
    letterLabel.text = [letters objectAtIndex:i];
    letterLabel.backgroundColor = [UIColor clearColor];
    letterLabel.font = [UIFont fontWithName:@"Helvetica" size:45];
    letterLabel.textAlignment = UITextAlignmentCenter;
    [self.view addSubview:letterLabel];
    [letterLabel release];
}

Ответы [ 3 ]

7 голосов
/ 15 февраля 2011

Есть два основных способа сделать это:

1.Создайте массив

Просто создайте NSMutableArray в качестве ивара в вашем контроллере представления, затем добавьте метки по мере их создания.Чтобы найти F, используйте [myArray objectAtIndex:5].

2.Использовать теги

При создании метки установите ее тег ([letterLabel setTag:i]).Затем, когда вы хотите получить его, используйте [[self view] viewWithTag:5].

4 голосов
/ 15 февраля 2011

Два подхода, которые я могу придумать:

  1. Добавьте все свои метки в NSArray;

  2. Установите свойство tagдля всех меток с определенным известным значением для каждой метки и доступа к ним с помощью [self.view viewWithTag:TheTagForTheLabel];

1 голос
/ 16 февраля 2011

Я, вероятно, создал бы NSMutableDictionary с строкой NSS, содержащей букву в качестве ключа и связанную UILabel в качестве объекта.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...