是否可以在应用启动时自动启动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'发布于 2013-05-22 21:02:59
您应该调用refreshNowShowingMoviesList:nil (请注意nil参数)。这样它就不会崩溃,因为你可以在nil对象上调用任何东西。但看起来你在给refreshNowShowingMoviesList:self打电话。这会导致在MasterViewController上进行endRefreshing调用,但该调用不可用。
或者更简单/更好,在调用之前检查类:
if([sender respondsToSelector:@selector(endRefreshing)]) {
[(UIRefreshControl *)sender endRefreshing];
}或者只使用属性而不是发送者参数。史密斯。比如self.tableView.refreshControl..。
https://stackoverflow.com/questions/16687253
复制相似问题