没有 UITableViewController 的 UIRefreshControl 不调用选择器

Posted

技术标签:

【中文标题】没有 UITableViewController 的 UIRefreshControl 不调用选择器【英文标题】:UIRefreshControl without UITableViewController not calling selector 【发布时间】: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");

【问题讨论】:

【参考方案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]; // 不确定这是必要的 是的,我很纠结这个问题。尝试了许多不同的品种,但可以调用选择器。有点觉得我错过了一些愚蠢的东西。

以上是关于没有 UITableViewController 的 UIRefreshControl 不调用选择器的主要内容,如果未能解决你的问题,请参考以下文章

在 UITableViewController 中没有调用 viewWillAppear?

UIViewController 子类(模仿 UITableViewController)没有被释放

没有在 UITableViewController 中调用 DidSelectRowAt

UITableViewController 在初始化时没有选择单元格

为啥 UIViewController 在 UINavigationBar 下扩展,而 UITableViewController 没有?

将 UINavigationBar 添加到没有 UINavigationController 的 UITableViewController