【发布时间】:2014-03-16 08:28:15
【问题描述】:
我想通过使用UIRefreshControl 对我的UITableViewController 实施Pull To Refresh。这是我到目前为止所尝试的。
- (void)viewDidLoad
{
.....
////********* Pull to refresh ************/
UIRefreshControl *refresh = [[UIRefreshControl alloc] init];
refresh.attributedTitle = [[NSAttributedString alloc] initWithString:@"Pull to Refresh"];
refresh.tintColor = [UIColor magentaColor];
// [self.tableView addSubview:refresh];
// [self.refreshControl setEnabled:YES];
[refresh addTarget:self action:@selector(pullToRefresh:) forControlEvents:UIControlEventValueChanged];
self.refreshControl = refresh;
}
-(void)pullToRefresh:(UIRefreshControl *)refresh {
[refresh beginRefreshing];
refresh.attributedTitle = [[NSAttributedString alloc] initWithString:@"Refreshing.."];
[self loadRecentActivities];
}
但是当我拉动表格视图时,活动指示器和标题均不可见,但是会调用 pullToRefresh 并刷新表格。我的应用程序支持 iOS7.0+。
我错过了什么?任何帮助将不胜感激?
编辑:我已尝试使用我编辑的代码中提到的[self.refreshControl setEnabled:YES]; 和[self.refreshControl setEnabled:YES];,但仍然没有运气。
这就是当我将它拉到刷新时我的 tableview 的样子-
最终解决方案:对于我使用的表格视图背景
UIImageView *imageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"background.png"]];
self.tableView.backgroundView = imageView;
刷新指示器和标题被隐藏在self.tableView.backgroundView 后面而不是使用
[self.tableView setBackgroundColor:[UIColor colorWithPatternImage:[UIImage imageNamed:@"background.png"]]];
它解决了我的问题。也非常感谢 Balram Tiwari 如果您仍有问题,请查看他的回答。
【问题讨论】:
-
UITableViewController 已经有一个 refreshControl,不需要再添加一个。
-
那行在我的代码中被注释了,它没有任何区别。
-
调用 [refresh beginRefreshing]。在 pullToRefresh 中就是这样。当你的任务完成时 [refresh endRefreshing];
-
这有什么不同吗?
-
这里回答了更好的解决方法,stackoverflow.com/a/18907625/753603
标签: ios objective-c ios7 uitabbarcontroller pull-to-refresh