【问题标题】:UIRefreshControl not working for UITableView in popoverUIRefreshControl 在弹出窗口中不适用于 UITableView
【发布时间】:2016-09-08 12:34:19
【问题描述】:

我的应用有两个包含 UITableViews 的 viewControllers。一个 viewController 在应用程序内显示为自定义全屏视图,另一个显示为弹出视图。我向两个 tableViews 添加了 UIRefreshControl 以更新它们的内容。拖动 refreshControl 并刷新 tableView 适用于自定义全屏视图。但是,弹出视图的 refreshControl 似乎不起作用。当我在 tableView 中向下拖动时,refreshControl 的活动指示器会继续进行,但会在 11/12 处停止(如下图所示),并且不会调用 regfresh 操作。

popover 的 refreshControl 的初始化代码与工作的 refreshControl 相同(除了动作的名称不同):

- (void) viewDidLoad
{
    self.refreshControl = [[UIRefreshControl alloc] init];
    self.refreshControl.attributedTitle = [[NSAttributedString alloc] initWithString: @"Refreshing..."];
    [self.refreshControl addTarget: self action: @selector(reloadTableData) forControlEvents: UIControlEventValueChanged];
    [self.tableView addSubview: self.refreshControl];
}

- (void) reloadTableData
{
    // reloading code. This method is not called in the popover view
}

我已经为这个问题苦苦挣扎了一段时间,但没有找到任何解决方案。会不会是在弹出视图中放置 refreshControl 会导致错误行为?

任何帮助将不胜感激。

【问题讨论】:

    标签: ios objective-c uitableview ipad uirefreshcontrol


    【解决方案1】:

    ViewController.m 中设置viewDidAppear

    UIRefreshControl *refreshControl = [UIRefreshControl new];
        [refreshControl addTarget:self action:@selector(handleRefresh:) forControlEvents:UIControlEventValueChanged];
        [_mainTableView addSubview:refreshControl];
        [_mainTableView sendSubviewToBack:refreshControl];
    
    - (void)handleRefresh:(UIRefreshControl *)refreshControl {
    
    //set your code here 
        [_mainTableView reloadData];
        [_mainTableView layoutIfNeeded];
        [refreshControl endRefreshing];
    }
    

    【讨论】:

    • 这与我使用的代码基本相同。 refreshControl 的初始化似乎不是问题,因为当我向下拖动 tableView 时它是可见的。此外,相同的代码在全屏视图中工作。似乎 refreshControl 的行为有所不同,因为它被放置在一个弹出视图中,至少我是这么想的。
    猜你喜欢
    • 2016-06-05
    • 1970-01-01
    • 2012-11-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多