嵌套表上的refreshcontrol无法正常工作(ios开发)

时间:2015-08-26 11:14:48

标签: ios objective-c cocoa-touch

我正试图在我的项目中“轻扫刷新”,但由于某种原因它不会...

据我所知,这应该很简单

  1. 编写动作监听器。
  2. 在viewDidLoad中实例化refreshControl。
  3. 将其添加到所选的tableView中。
  4. 这就是我所做的,但它不起作用。

    我正在编写代码的控制器扩展了UIViewController并保存了一个scrollview,而scrollview又拥有一个tableview。所以: view => scrollview =>的tableview

    在内部tableview上我想放置refreshController。

    以下是我到目前为止所获得的一些相关代码片段。在UIViewcontroller的“viewDidLoad”

    self.refreshControl = [[UIRefreshControl alloc] init];
    self.refreshControl.attributedTitle = [[NSAttributedString alloc] initWithString:@"Pull to Refresh"];
    [self.refreshControl addTarget:self
                        action:@selector(refresh:)
                        forControlEvents:UIControlEventValueChanged];
    [self.tableCommunity addSubview:self.refreshControl];
    

    和刷新方法:

    -(void)refresh:(UIRefreshControl *)refreshControl {
        [self loadOrganizationswithOffset:0 andLimit:item_load_limit andInviteStatus:invite_accepted];
    }
    

    当响应返回[self.refreshControl endRefreshing];被调用时,在那里调用的方法将生成一个网络调用来更新数据

    就是这样,其余的工作正常。数据从网络加载并正确显示,只有刷卡部分才能刷新。

    我错过了什么吗?

2 个答案:

答案 0 :(得分:0)

尝试将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]; 的子视图:

WHERE MATCH(jobTitle) AGAINST ('"fs sales"' IN BOOLEAN MODE)

答案 1 :(得分:0)

好吧,好像我找到了答案。正如我所料,它与我的观点构建方式有关。 在主页面上,我有1个启用了分页的scrollview,我在其中添加了3个“子”页面(tableviews),每个页面显示一组不同的数据。 因此,为了有一个工作的刷新控件,我需要为每个tableview添加一个新的,而不是所有三个相同的一个,回想起来,它们很有意义。

我现在只需要3个UIRefreshControllers,每个选项卡一个

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

案件结束(最后)。