【问题标题】:UIRefreshControl without UITableViewController not calling selector没有 UITableViewController 的 UIRefreshControl 不调用选择器
【发布时间】:2013-11-26 10:43:08
【问题描述】:

我有一个 UIViewController,它有一个 UITableView 作为子视图。我正在尝试在表格上添加一个下拉刷新。

在我找到here 的一些示例和讨论之后,我显示了 UIRefresh,但它从不调用选择器。我没有收到拉动操作发生的通知。

我不能使用 UITableViewController 作为我的主控制器,因为我需要在屏幕底部添加一个固定按钮。

我觉得我错过了一些希望对其他人来说显而易见的东西。

@interface ActivityViewController ()<UITableViewDelegate, UITableViewDataSource, UIScrollViewDelegate>
@end



- (void)viewDidLoad{

    [super viewDidLoad];

    _myTableView.delegate = self;

    _myTableView.dataSource = self;

    _tableViewController = [UITableViewController new];

    _tableViewController.tableView = _myTableView;

    [self addChildViewController:_tableViewController]; // Not sure this is necessary

    _refreshControl = [UIRefreshControl new];

    [_refreshControl addTarget:self action:@selector(loadMoreData) forControlEvents:UIControlEventValueChanged];

    _tableViewController.refreshControl = _refreshControl;

}

- (void)loadMoreData{

    NSLog(@"loadMoreData");
}

【问题讨论】:

    标签: cocoa-touch uitableview selector uirefreshcontrol


    【解决方案1】:

    好的,这正在工作。但我不知道为什么!我有点离开它,改变了其他需要做的事情,然后昨晚再次测试,它正在工作。我承认我有点困惑。就像我几天前所做的那样,我使用了早先帖子here 中给出的答案中的以下代码。所以感谢您的时间和投入。正如预期的那样,它现在完美无缺。

    // Refresh control
    UITableViewController *tableViewController = [[UITableViewController alloc] init];
    tableViewController.tableView = self.myTableView;
    
    self.refreshControl = [[UIRefreshControl alloc] init];
    [self.refreshControl addTarget:self action:@selector(loadMoreData) forControlEvents:UIControlEventValueChanged];
    tableViewController.refreshControl = self.refreshControl;
    

    【讨论】:

      【解决方案2】:

      你应该用

      实例化你的tableviewcontroller
      [UITableViewController alloc] initWithStyle:(UITableViewStyle)
      

      使用new 进行分配初始化,但您应该使用指定的初始化程序

      【讨论】:

      • 这没有帮助,实际上我 UIRefreshController 根本没有显示。我在原始帖子中添加的链接有一个详细的讨论,解释了为什么必须按照我的方式完成。只是我的选择器被忽略了......
      • 好的,我改变了,但我的选择器 - (void)loadMoreData 仍然没有被调用。
      • 我不知道。也许尝试使您的 refreshcontroller 成为实例变量,或者在某个时候检查它是否为 nil 并且您不需要 [self addChildViewController:_tableViewController]; // 不确定这是必要的
      • 是的,我很纠结这个问题。尝试了许多不同的品种,但可以调用选择器。有点觉得我错过了一些愚蠢的东西。
      猜你喜欢
      • 2012-09-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-01-21
      • 1970-01-01
      • 2011-08-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多