2013-05-22 5 views
0

Можно ли запустить UIRefreshControl после запуска приложения? Я пробовал звонить self.refreshControl beginRefreshing];, но он не работает.UIRefreshControl Auto Start

Вот код в моем viewDidLoad:

UIRefreshControl *refreshControl = [[UIRefreshControl alloc] init]; 
    [refreshControl addTarget:self action:@selector(refreshNowShowingMoviesList:) forControlEvents:UIControlEventValueChanged]; 
    [self setRefreshControl:refreshControl]; 
    [refreshControl beginRefreshing]; 

Любые идеи будут оценены. Благодаря!

EDIT: Вот в моем методе refreshNowShowingMoviesList:

- (void)refreshNowShowingMoviesList:(id)sender 
{ 
    // Create URL 
    NSURL *url = [NSURL URLWithString:kNowShowingMoviesURL"]; 

    // Initialize URL request 
    NSMutableURLRequest *urlRequest = [NSMutableURLRequest requestWithURL:url]; 

    // Set value on header 
    [urlRequest setValue:kHeaderFieldValue forHTTPHeaderField:kHeaderField]; 

    // JSON request operation 
    AFJSONRequestOperation *operation = [AFJSONRequestOperation JSONRequestOperationWithRequest:urlRequest success:^(NSURLRequest *request, NSHTTPURLResponse *response, id JSON) { 
     NSMutableArray *results = [(NSDictionary *)JSON objectForKey:@"results"]; 

     if ([results count]) { 
      _objects = results; 

      // Reload table view 
      [self.tableView reloadData]; 

      // End refreshing 
      [(UIRefreshControl *)sender endRefreshing]; 
     } 

    } failure:^(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error, id JSON) { 
     // End refreshing 
     [(UIRefreshControl *)sender endRefreshing]; 

     // Show error alert 
     dispatch_async(dispatch_get_main_queue(), ^{ 
      UIAlertView *errorAlert = [[UIAlertView alloc] initWithTitle:kSorryTitle message:[error localizedDescription] delegate:self cancelButtonTitle:nil otherButtonTitles:kOk, nil]; 
      [errorAlert show]; 
     }); 
    }]; 

    // Start operation 
    [operation start]; 
} 

с сообщением об ошибке:

'NSInvalidArgumentException', reason: '-[MasterViewController endRefreshing]: unrecognized selector sent to instance 0xa172450' 
+1

если вы хотите позвонить, обновитеNowShowingMoviesList :, просто сделайте это. Или вы хотите увидеть анимацию RefreshControl? –

+0

Вызов метода дает мне ошибки, так как после получения результатов он останавливает освежающую анимацию 'UIRefreshControl'. – jaytrixz

+0

Какое сообщение об ошибке? Можете ли вы опубликовать код метода? –

ответ

1

Вы должны вызвать refreshNowShowingMoviesList:nil (обратите внимание на параметр nil). Чем это не сработает, потому что вы можете называть ничего на ноль объектах. Но похоже, что вы звоните refreshNowShowingMoviesList:self. Это приводит к endRefreshing звоните по MasterViewController, что не доступно.

Или еще проще/лучше: Проверьте класс перед вызовом ..

if([sender respondsToSelector:@selector(endRefreshing)]) { 
    [(UIRefreshControl *)sender endRefreshing]; 
} 

Или просто использовать свойство вместо аргумента отправителя. Что-л. например self.tableView.refreshControl ...

+0

Спасибо! Не видел этого «себя». Он работает сейчас. :) – jaytrixz