Программно созданный индикатор активности не удаляется

Я хочу добавить ActivityIndicator к UIButton Так что я сделал так

-(IBAction)SetNationality:(id)sender
{

actInd=[[UIActivityIndicatorView alloc] initWithFrame:CGRectMake(0, 0, 40, 30)];
[btnpost addSubview:actInd];
[actInd startAnimating];

NSMutableDictionary *dictionaly=[[NSMutableDictionary alloc] init];
[dictionaly setValue:[NSNumber numberWithInt:0] forKey:@"NationalityCode"];
[dictionaly setValue:@"nationalitytest test" forKey:@"NationalityName"];
[dictionaly setValue:[NSNumber numberWithInt:0] forKey:@"Deleted"];
[dictionaly setValue:[NSNumber numberWithInt:1] forKey:@"Status"];

NSMutableDictionary *dictNationality=[[NSMutableDictionary alloc] init];
[dictNationality setObject:dictionaly forKey:@"Nationality"];


 [wb prepareURL:@"ProfileConfig/Nationalities" :@"" :YES :NO :dictNationality:^(NSString *status)
{

    [self DataReceived];



    }];
}

Затем я удаляю этот индикатор активности внутри этого метода.

-(void)DataReceived
 {

  [actInd removeFromSuperview];
  NSLog(@"data array %@",dm.arrayData);
  }

Но моя проблема в том, что индикатор активности не удаляется из суперпредставления. Он продолжает вращаться. Как я могу решить эту проблему. Спасибо


person IRD    schedule 06.07.2015    source источник
comment
Может быть, метод SetNationality вызывается несколько раз, и удаляется только последний индикатор?   -  person lassej    schedule 06.07.2015
comment
ваш метод DataRecieved вызывается в основном потоке?   -  person johny kumar    schedule 06.07.2015
comment
Я вызываю метод DtaReceived внутри блока. проверьте мой код выше   -  person IRD    schedule 06.07.2015
comment
вы находитесь в основном потоке, когда вызывается ваш метод –DataReceived? (кстати, ваши соглашения об именах методов ужасны!)   -  person holex    schedule 06.07.2015


Ответы (3)


попробуйте этот код:

-(void)DataReceived
 {

    dispatch_async(dispatch_get_main_queue(), ^{
       [actInd stopAnimating];
       [actInd removeFromSuperview];
        // do your UI updates here...
    });

  NSLog(@"data array %@",dm.arrayData);
  }
person Dharmesh Dhorajiya    schedule 06.07.2015

Нет необходимости удалять индикатор активности из родительского представления. Просто остановите анимацию индикатора активности.

-(void)DataReceived
{
   dispatch_async(dispatch_get_main_queue(), ^{
       [actInd stopAnimating];
   });
}
person Maddy    schedule 06.07.2015

Надеюсь, это поможет вам:

- (void) hideActivityIndicator {

    actInd.hidden = YES;
    [UIView animateWithDuration:0.3 animations:^{
    actInd.alpha = 0.0;
   }  completion:^(BOOL finished) {
     [actInd stopAnimating];

   }];

}
person soumya    schedule 06.07.2015