2

我正在尝试在 UIViewController 中实现 UIRefreshControl。我不能使用 UITableViewController 因为 tableView 只是我的 viewController 的一部分。

在大多数情况下,这种解决方法就像魅力一样。但有时(随机发生)应用程序崩溃EXC_BAD_ACCESS code=1

- (void)viewDidLoad {
    [super viewDidLoad];

    UIRefreshControl * refCon = [[UIRefreshControl alloc] init];
    [refCon addTarget:self selector:@selector(refresh:) forControlEvent:UIControlEventValueChanged];
    [tableView addSubView:refCon];
}

- (void)refresh:(UIRefreshControl *)sender {
    [NSThred detachNewThreadSelector:@selector(doRefresh:) toTarget:self withObject:sender];
}

- (void)doRefresh:(UIRefreshControl *)sender {
    [self checkUpdate];
    [self loadData];
    [sender endRefreshing];
}
4

2 回答 2

5

您正在-endRefreshing后台线程上调用。不要那样做。

而且,不能保证UIRefreshControl直接添加 a 作为子视图。UITableView您应该使用UITableViewController.

于 2012-11-05T23:55:29.067 回答
1

首先你在 UIRefreshControl 上放置一个标签

UIRefreshControl * refCon = [[UIRefreshControl alloc] init];
[refCon addTarget:self selector:@selector(refresh:) forControlEvent:UIControlEventValueChanged];
refCon.tag = 101 //for example
[tableView addSubView:refCon];

当 tableView 完成重新加载时,您输入:

UIRefreshControl *getRefreshControl = (UIRefreshControl*)[self.tablaPildoras viewWithTag:101];
[getRefreshControl endRefreshing];
于 2013-06-29T14:44:12.147 回答