嵌套表上的刷新控件不工作(ios开发)
我试图让“刷刷新”在我的项目工作,但由于某些原因,它只是不会 据我所知,这应该很简单嵌套表上的刷新控件不工作(ios开发),ios,objective-c,cocoa-touch,Ios,Objective C,Cocoa Touch,我试图让“刷刷新”在我的项目工作,但由于某些原因,它只是不会 据我所知,这应该很简单 编写动作侦听器 在viewDidLoad中实例化refreshControl 将其添加到所选的tableView中 这就是我所做的,但它不起作用 我在其中编写代码的控制器扩展了UIViewController并持有一个scrollview,而scrollview又持有一个tableview。因此: 视图=>scrollview=>tableview 我想把refreshController放在内部的tablev
-(void)refresh:(UIRefreshControl *)refreshControl {
[self loadOrganizationswithOffset:0 andLimit:item_load_limit andInviteStatus:invite_accepted];
}
当响应返回[self.refreshControl endRefreshing]时,在那里调用的方法将生成一个网络调用来更新数据代码>被调用
就这样,其余的都很好。数据从网络加载并正确显示,只有“刷到刷新”部分不正确
我遗漏了什么吗?尝试将您的UIRefreshControl
放在UIView
上,这是您的UITableView
的子视图:
UIView *refreshView = [[UIView alloc] initWithFrame:CGRectMake(0.0f, 0.0f, table.frame.size.width, 44.0f)];
[table insertSubview:refreshView atIndex:0];
_refreshControl = [[UIRefreshControl alloc] init];
[_refreshControl addTarget:self action:@selector(refresh:) forControlEvents:UIControlEventValueChanged];
[refreshView addSubview:_refreshControl];
好吧,看来我找到了答案。正如我所预料的那样,这与我构建视图的方式有关。
在主页上,我有一个启用了分页的scrollview,我在其中添加了3个“子”页面(TableView),每个页面显示不同的数据集。
因此,为了使刷新控件能够正常工作,我需要在每个tableview中添加一个新控件,而不是在所有三个tableview中添加一个相同的控件。回顾过去,这很有意义
我现在只有3个UIRefreshController,每个选项卡一个
self.refreshControl = [[UIRefreshControl alloc] init];
self.refreshControl.attributedTitle = [[NSAttributedString alloc] initWithString:NSLocalizedString(@"pull_to_refresh", nil)];
[self.refreshControl addTarget:self
action:@selector(refresh:)
forControlEvents:UIControlEventValueChanged];
self.refreshControl2 = [[UIRefreshControl alloc] init];
self.refreshControl2.attributedTitle = [[NSAttributedString alloc] initWithString:NSLocalizedString(@"pull_to_refresh", nil)];
[self.refreshControl2 addTarget:self
action:@selector(refresh:)
forControlEvents:UIControlEventValueChanged];
self.refreshControl3 = [[UIRefreshControl alloc] init];
self.refreshControl3.attributedTitle = [[NSAttributedString alloc] initWithString:NSLocalizedString(@"pull_to_refresh", nil)];
[self.refreshControl3 addTarget:self
action:@selector(refresh:)
forControlEvents:UIControlEventValueChanged];
当我初始化它们时,它们会被添加到各自的选项卡中
UITableView *tableView = [[UITableView alloc]initWithFrame:CGRectMake(xValue, 10, self.scrollView.frame.size.width-10,height)];
tableView.tag = tabId;
tableView.userInteractionEnabled = YES;
tableView.backgroundColor = [UIColor whiteColor];
tableView.separatorStyle = UITableViewCellSeparatorStyleNone;
tableView.layer.cornerRadius = 8;
tableView.layer.masksToBounds = YES;
tableView.dataSource = self;
tableView.delegate = self;
tableView.alwaysBounceVertical = YES;
switch(tabId){
case 0:
[tableView addSubview:self.refreshControl];
break;
case 1:
[tableView addSubview:self.refreshControl2];
break;
case 2:
[tableView addSubview:self.refreshControl3];
案例结束(最后)。该解决方案的问题是,RefreshView只能添加到UITable或其控制器。代码片段来自生产应用程序,因此我不确定是否理解您的意思。我创建了一个UIView
,将其添加为我的UITableView
的子视图,并将UIRefreshControl
添加到UIView
中。。。当我尝试您的代码段时,它会引发一个异常:“NSInternalInconsistencyException”,原因是:“UIRefreshControl只能由UITableViewController管理”
UITableView *tableView = [[UITableView alloc]initWithFrame:CGRectMake(xValue, 10, self.scrollView.frame.size.width-10,height)];
tableView.tag = tabId;
tableView.userInteractionEnabled = YES;
tableView.backgroundColor = [UIColor whiteColor];
tableView.separatorStyle = UITableViewCellSeparatorStyleNone;
tableView.layer.cornerRadius = 8;
tableView.layer.masksToBounds = YES;
tableView.dataSource = self;
tableView.delegate = self;
tableView.alwaysBounceVertical = YES;
switch(tabId){
case 0:
[tableView addSubview:self.refreshControl];
break;
case 1:
[tableView addSubview:self.refreshControl2];
break;
case 2:
[tableView addSubview:self.refreshControl3];