1

我想在UIViewController中實現UIRefreshControl。我無法使用UITableViewController,因爲tableView只是我的viewController的一部分。UIRefreshControl EXC_BAD_ACCESS

在大多數情況下,此解決方法的作用就像魅力一樣。但有時(隨機出現)的應用與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

你在後臺線程調用-endRefreshing崩潰。不要這樣做。

而且,直接添加UIRefreshControl作爲UITableView的子視圖不能保證能正常工作。你應該使用UITableViewController

+0

感謝戴夫!在主線程中調用它解決了我的問題。 – Motasim

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];