没有UITableViewController的UIRefreshControl没有调用选择器

时间:2013-11-26 10:43:09

标签: cocoa-touch uitableview selector uirefreshcontrol

我有一个UIViewController,它有一个UITableView作为子视图。我试图在桌面上添加一个pull-to-refresh。

根据我发现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");
}

2 个答案:

答案 0 :(得分: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;

答案 1 :(得分:0)

您应该使用

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

使用new执行alloc init,但您应该使用指定的初始化程序