Cocoa touch 不带UITableViewController的UIRefreshControl不调用选择器

Cocoa touch 不带UITableViewController的UIRefreshControl不调用选择器,cocoa-touch,uitableview,selector,uirefreshcontrol,Cocoa Touch,Uitableview,Selector,Uirefreshcontrol,我有一个UIViewController,它将UITableView作为子视图。我试图增加一个拉力来刷新桌面 根据我找到的一些示例和讨论,我显示了UIRefresh,但它从未调用选择器。我没有收到拉动作发生的通知 我不能使用UITableViewController作为主控制器,因为我需要在屏幕底部添加一个固定按钮 我有一种感觉,我错过了一些对别人来说很明显的东西 @interface ActivityViewController ()<UITableViewDelegate, UITab

我有一个UIViewController,它将UITableView作为子视图。我试图增加一个拉力来刷新桌面

根据我找到的一些示例和讨论,我显示了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");
}
@接口活动视图控制器()
@结束
-(无效)viewDidLoad{
[超级视图下载];
_myTableView.delegate=self;
_myTableView.dataSource=self;
_tableViewController=[UITableViewController新建];
_tableViewController.tableView=\u myTableView;
[self-addChildViewController:_tableViewController];//不确定这是否必要
_refreshControl=[UIRefreshControl新建];
[\u refreshControl addTarget:self action:@selector(loadMoreData)for ControlEvents:UIControlEventValueChanged];
_tableViewController.refreshControl=\u refreshControl;
}
-(void)加载更多数据{
NSLog(@“loadMoreData”);
}

您应该使用

[UITableViewController alloc] initWithStyle:(UITableViewStyle)

使用
new
会执行alloc init,但您应该使用指定的初始值设定项好,现在可以了。但我不知道为什么!!我有点离开了它,改变了其他需要做的事情,然后昨晚又测试了一次,它开始工作了。我承认我有点困惑。正如我几天前所做的那样,我使用了前面帖子中给出的答案中的代码。因此,感谢您的时间和投入。正如预期的那样,它现在工作得非常完美

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

那没用,事实上我根本没出现。我在我的原始帖子上面添加的链接有一个详细的讨论,解释了为什么我必须这样做。只是忽略了我的选择器…好吧,我更改了它,但仍然没有调用我的选择器-(void)loadMoreData。我不知道。也许可以尝试将refreshcontroller设置为实例变量,或者在某个点检查它是否为nil,您不需要[self-addChildViewController:_-tableViewController];//不确定这是否必要是的,我被这个问题困住了。尝试了许多不同的品种,但可以调用选择器。有点觉得我错过了一些愚蠢的事情。