为了账号安全,请及时绑定邮箱和手机立即绑定

没有UITableViewController的UIRefreshControl

没有UITableViewController的UIRefreshControl

iOS
潇湘沐 2019-07-26 14:13:16
没有UITableViewController的UIRefreshControl只是好奇,因为这看起来不可能,但有没有一种诡秘的方法来利用新的iOS 6UIRefreshControl不使用UITableViewController子类?我经常使用UIViewController带着UITableView子视图和符合UITableViewDataSource和UITableViewDelegate而不是使用UITableViewController彻头彻尾的。
查看完整描述

3 回答

?
当年话下

TA贡献1890条经验 获得超9个赞

凭直觉,基于DrummerB的灵感,我尝试简单地添加一个UIRefreshControl实例作为我的UITableView..神奇地起作用了!

UIRefreshControl *refreshControl = [[UIRefreshControl alloc] init];[refreshControl addTarget:self action:@selector(handleRefresh:) forControlEvents:UIControlEventValueChanged];[self.myTableView addSubview:refreshControl];

这增加了一个UIRefreshControl在您的表视图之上并按预期工作,而不必使用UITableViewController :)


编辑:上面仍然有效,但是正如一些人所指出的,在以这种方式添加UIRefreshControl时,有一个轻微的“口吃”。解决方案之一是实例化UITableViewController,然后将UIRefreshControl和UITableView设置为此,即:

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




查看完整回答
反对 回复 2019-07-27
?
慕标琳琳

TA贡献1830条经验 获得超9个赞

若要消除由接受的答案引起的口吃,您可以分配UITableView转到UITableViewController.

_tableViewController = [[UITableViewController alloc]initWithStyle:UITableViewStylePlain];[self addChildViewController:_tableViewController];_tableViewController.refreshControl = [UIRefreshControl new];[_tableViewController.refreshControl addTarget:self action:@selector(loadStream) forControlEvents:UIControlEventValueChanged];_theTableView = _tableViewController.tableView;

编辑:

添加UIRefreshControl没有UITableViewController没有口吃和保留良好的动画后刷新数据的表视图。

UIRefreshControl *refreshControl = [UIRefreshControl new];[refreshControl addTarget:self action:@selector(handleRefresh:) forControlEvents:UIControlEventValueChanged];[self.theTableView addSubview:refreshControl];[self.theTableView sendSubviewToBack:refreshControl];

稍后在处理刷新数据时.。

- (void)handleRefresh:(UIRefreshControl *)refreshControl {
    [self.theTableView reloadData];
    [self.theTableView layoutIfNeeded];
    [refreshControl endRefreshing];}




查看完整回答
反对 回复 2019-07-27
?
守候你守候我

TA贡献1802条经验 获得超10个赞

您要尝试的是在您正在使用的ViewController中使用容器视图。您可以使用专用的表视图定义干净的UITableViewController子类,并将其放在ViewController中。



查看完整回答
反对 回复 2019-07-27
  • 3 回答
  • 0 关注
  • 426 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信