首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >UIRefreshControl自动启动

UIRefreshControl自动启动
EN

Stack Overflow用户
提问于 2013-05-22 16:41:50
回答 1查看 1.3K关注 0票数 0

是否可以在应用启动时自动启动UIRefreshControl?我试着给self.refreshControl beginRefreshing];打电话,但不起作用。

下面是我的viewDidLoad中的一些代码:

代码语言:javascript
复制
    UIRefreshControl *refreshControl = [[UIRefreshControl alloc] init];
    [refreshControl addTarget:self action:@selector(refreshNowShowingMoviesList:) forControlEvents:UIControlEventValueChanged];
    [self setRefreshControl:refreshControl];
    [refreshControl beginRefreshing];

编辑

下面是我的refreshNowShowingMoviesList方法中的内容:

代码语言:javascript
复制
- (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];
}

并显示错误消息:

代码语言:javascript
复制
'NSInvalidArgumentException', reason: '-[MasterViewController endRefreshing]: unrecognized selector sent to instance 0xa172450'
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-05-22 21:02:59

您应该调用refreshNowShowingMoviesList:nil (请注意nil参数)。这样它就不会崩溃,因为你可以在nil对象上调用任何东西。但看起来你在给refreshNowShowingMoviesList:self打电话。这会导致在MasterViewController上进行endRefreshing调用,但该调用不可用。

或者更简单/更好,在调用之前检查类:

代码语言:javascript
复制
if([sender respondsToSelector:@selector(endRefreshing)]) {
    [(UIRefreshControl *)sender endRefreshing];
}

或者只使用属性而不是发送者参数。史密斯。比如self.tableView.refreshControl..。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16687253

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档