2012-01-10 4 views
0

У меня проблема с индикатором активности в моей ячейке. Я запускаю анимацию в этом методе здесь, а затем загружаю данные оттуда. Я перезагружаю представление таблицы и останавливаю анимацию вызова, когда numbersResponseData.length != 0, но я не вижу индикатор активности.UIActivityIndicatorView отображается пустым

У меня есть вспомогательный вид стрелки thingy, который перемещается влево при его загрузке. Я просто не вижу индикатор.

Это внутри tableView:cellForRowAtIndexPath: метода:

if(indexPath.section == 0) 
{   
    if ((indexPath.row == 0) && (numbersResponseData.length == 0)) 
    { 
     cellActivityIndicator = 
      [[UIActivityIndicatorView alloc] 
       initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleGray]; 
     [cellActivityIndicator startAnimating]; 
     [cell setAccessoryView:cellActivityIndicator]; 

     // Call ASIHTTPRequest methods to start xml download/cache process 
     [self setRequestString:@"Numbers.xml"]; 
    } 
    //will set other cells up later 
} 

ОБНОВЛЕНИЕ:

Я добавил вызов UIActivityIndicator в другой части моего, если заявление и теперь он применяется индикатор активности в каждой клетке, но теперь я могут видеть их.

if(indexPath.section == 0) 
    {   
      cellActivityIndicator = 
       [[UIActivityIndicatorView alloc] 
        initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleGray]; 
      [cellActivityIndicator startAnimating]; 
      [cell setAccessoryView:cellActivityIndicator]; 
     if ((indexPath.row == 0) && (numbersResponseData.length == 0)) 
     { 
      cellActivityIndicator = 
       [[UIActivityIndicatorView alloc] 
        initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleGray]; 
      [cellActivityIndicator startAnimating]; 
      [cell setAccessoryView:cellActivityIndicator]; 

      // Call ASIHTTPRequest methods to start xml download/cache process 
      [self setRequestString:@"Numbers.xml"]; 
     } 
     //will set other cells up later 
    } 

Я отладил .row, если заявление и его демонстративно вызывался .. Я просто не понимаю, почему он будет работать от одного, если заявление, но не дальше.

+0

Вы не увидите индикатор, если вы используете синхронный запрос, так как он, блокирующий UI. Вы используете синхронный запрос? – Cyprian

+0

нет Я вызывающе использую Asynchronous, просто проверил его ... это странно, потому что вид аксессуара ячейки перемещается влево, а затем назад вправо, как только он закончил его, вы вообще не видите индикатор. –

+0

Я исправил проблему, и код для инициализации UIActivityIndicator, запускающий и останавливающий анимацию, тот же, но чтобы заставить его работать правильно, мне пришлось изменить структуру if if .. weird Я знаю, возможно, что-то еще, что вызвало это, что я не нажимал, но от изменения утверждений if, похоже, исправил его правильно. –

ответ

0

Вы вызываете этот код из цикла пользовательского интерфейса или из рабочего потока? Вам нужно будет использовать performSelectorOnMainThread: для вызова изменений пользовательского интерфейса, если вы звоните из рабочего потока. Пожалуйста, обратитесь к:

http://blog.jayway.com/2010/03/30/performing-any-selector-on-the-main-thread/

+0

Я не совсем уверен в этом, так как я вызываю изнутри tableView: cellForRowAtIndexPath: но вызывает компонент tableviewcell, поэтому не уверен, что это то же самое, что описано выше. –

1

я думаю, что ваш UIActivityIndicatorView скрывается за UITableView. Свалка этого кода и проверить ли вы в состоянии увидеть этот показатель на взгляде или нет

subViewActivityIndicator = [[[UIActivityIndicatorView alloc]initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhiteLarge] autorelease]; 
subViewActivityIndicator.frame=CGRectMake(150, 220, 37, 37); 
subViewActivityIndicator.color = [UIColor colorWithRed:0.6 green:1 blue:0 alpha:1.0]; 
[self.tableview addSubview:subViewActivityIndicator]; 
[subViewActivityIndicator startAnimating]; 

удалить использование этого,

[subViewActivityIndicator removeFromSuperview]; 
+0

Хорошо, я сделал это, и нет, я не вижу ActivityIndicatorView ... :( –

+0

Проверьте две вещи: 1) Вы добавляете subview right subview ([self.tableview addSubview: subViewActivityIndicator];) и 2) Если у вас все еще есть ошибка, использовать селектор afterDelay для вызова метода spinner ([self performSelector: @selector (getStartSpinner) withObject: nil afterDelay: 0.1];) – AAV

+0

Я просто попробовал что-то, что я описал в вышеприведенном вопросе. Теперь я думаю, что это ошибка с моим утверждением if, что это называется внутри. –

Смежные вопросы