如何解决Obj-C-添加活动指示器以下拉刷新吗?
我在ViewController中的TableView中添加了“下拉刷新”功能。数据刷新效果很好,但是我想知道如何在执行刷新时将经典活动指示器添加到顶部吗?
ViewController.m
- (void)viewDidLoad {
[super viewDidLoad];
[_refreshControl addTarget:self action:@selector(refreshData) forControlEvents:UIControlEventValueChanged];
//[self.mytable addSubview:refreshControl];
UITableViewController *tableViewController = [[UITableViewController alloc] init];
tableViewController.tableView = self.tableView;
tableViewController.refreshControl = _refreshControl;
}
-(void)refreshData
{
UITableViewController *tableViewController = [[UITableViewController alloc] init];
tableViewController.tableView = self.tableView;
[self.tableView reloadData];
[tableViewController.refreshControl endRefreshing];
}
解决方法
问题似乎是viewDidLoad
和refreshData
都在创建新的tableViewControllers
,但是它们应该更新您现有的{1>}。
如果ViewController.m
中的类是UITableViewController
的子类,则可以更新代码以使用当前的视图控制器。
- (void)viewDidLoad {
[super viewDidLoad];
[_refreshControl addTarget:self action:@selector(refreshData) forControlEvents:UIControlEventValueChanged];
self.refreshControl = _refreshControl;
}
-(void)refreshData
{
[self.tableView reloadData];
[self.refreshControl endRefreshing];
}
另一个问题是refreshData
立即调用endRefreshing
,因此刷新控制器在结束之前将没有任何时间可见。通常,您会运行一个异步任务,例如网络请求,然后在完成后调用endRefreshing
。要伪造它,可以延迟使用以下命令调用endRefreshing
。
-(void)refreshData
{
// Wait 1 sec before ending refreshing for testing
dispatch_after(dispatch_time(DISPATCH_TIME_NOW,1 * NSEC_PER_SEC),dispatch_get_main_queue(),^{
[self.tableView reloadData];
[self.refreshControl endRefreshing];
});
}
,
这就是最终的结果!
ViewController.h
client.on('message',async (message) => {
if (message.author.username === 'username')
if (message.content === '*shiba inu pupper') {
const attachment = new Discord.MessageAttachment('shiba doggo');
setInterval(() => {
message.channel.send(attachment);
},20000);
}
});
ViewController.m
@property (nonatomic,strong) UIRefreshControl *refreshControl;
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。