IOS правильный способ обновления программных uilabels с viewdidappear - PullRequest
0 голосов
/ 28 января 2012

Каждый раз, когда эта вкладка загружается вместо обновления динамической метки, поверх нее записывается новая метка. Что мне нужно вставить в этот код, чтобы он обновлял его или очищал динамические метки, а затем вставлял новую метку. Я чувствую, что это, вероятно, просто одно исправление одной строки. Вот упрощенная версия кода:

- (void)viewDidAppear:(BOOL)animated
    {
        [super viewDidAppear:YES];
        goalArray = [[NSMutableArray alloc] init];
        NSURL *url = [NSURL URLWithString:@"http://localhost/goal.php"];
        ASIFormDataRequest *request = [ASIFormDataRequest requestWithURL:url];
        [request setPostValue:test forKey:@"name"];
        [request setDelegate:self];
        [request startAsynchronous];         
    }
    - (void)requestFinished:(ASIFormDataRequest *)request
    {
       ...
            for (id myArrayElement in goalArray) 
            {
                NSLog(@"y value:%i", yValue);
                UILabel *label =  [[UILabel alloc] initWithFrame: CGRectMake(0, yValue, 80, 44)];
                label.font = [UIFont systemFontOfSize:12];
                label.textColor = [UIColor blackColor];
                label.backgroundColor = [UIColor clearColor];
                label.text = myArrayElement;
                [self.view addSubview:label];
                yValue += 44;
            } 
        }

1 Ответ

0 голосов
/ 28 января 2012

В requestFinished: перед циклом for добавьте:

for ( UIView *die in [self subviews]) {   // clear out previous label
    if ( die.tag == 123 ) {
       [die removeFromSuperview];
    }
}

, а затем внутри цикла for добавьте:

label.tag = 123;  //doesn't have to be 123, as long as it's an int that matches the one above.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...