启动应用后是否可以自动启动UIRefreshControl
?我试着打电话给self.refreshControl beginRefreshing];
,但它没有用。
这是我的viewDidLoad中的一些代码:
UIRefreshControl *refreshControl = [[UIRefreshControl alloc] init];
[refreshControl addTarget:self action:@selector(refreshNowShowingMoviesList:) forControlEvents:UIControlEventValueChanged];
[self setRefreshControl:refreshControl];
[refreshControl beginRefreshing];
这里面是我的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'
答案 0 :(得分:1)
您应该致电refreshNowShowingMoviesList:nil
(请注意nil
参数)。然后它不会崩溃,因为你可以在nil对象上调用任何东西。但似乎你在呼叫refreshNowShowingMoviesList:self
。这会导致对endRefreshing
进行MasterViewController
调用,但这不可用。
甚至更容易/更好,请在致电之前检查课程:
if([sender respondsToSelector:@selector(endRefreshing)]) {
[(UIRefreshControl *)sender endRefreshing];
}
或者只使用属性而不是sender参数。水木清华。比如self.tableView.refreshControl
...