我正在使用swift构建一个RSS阅读器,需要实现pull to reload功能.
这是我试图这样做的方式.
class FirstViewController: UIViewController,
UITableViewDelegate, UITableViewDataSource {
@IBOutlet var refresh: UIScreenEdgePanGestureRecognizer
@IBOutlet var newsCollect: UITableView
var activityIndicator:UIActivityIndicatorView? = nil
override func viewDidLoad() {
super.viewDidLoad()
self.newsCollect.scrollEnabled = true
// Do any additional setup after loading the view, typically from a nib.
if nCollect.news.count <= 2{
self.collectNews()
}
else{
self.removeActivityIndicator()
}
view.addGestureRecognizer(refresh)
}
@IBAction func reload(sender: UIScreenEdgePanGestureRecognizer) {
nCollect.news = News[]()
return newsCollect.reloadData()
}
Run Code Online (Sandbox Code Playgroud)
我正进入(状态 :
属性'self.refresh'未在super.init调用中初始化
请帮助我理解手势识别器的行为.一个工作示例代码将是一个很好的帮助.
谢谢.
我在UITableView中使用UIRefreshControl:
UIRefreshControl *refreshControl = [[UIRefreshControl alloc] init];
[refreshControl addTarget:self action:@selector(refresh)
forControlEvents:UIControlEventValueChanged];
self.refreshControl = refreshControl;
Run Code Online (Sandbox Code Playgroud)
使用刷新处理程序
-(void)refresh {
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
// (...some long running operation...)
dispatch_async(dispatch_get_main_queue(), ^{
[self.refreshControl endRefreshing];
});
});
}
Run Code Online (Sandbox Code Playgroud)
在长时间运行操作期间,我按"主页"按钮使应用程序无效.之后,我再次激活应用程序.旋转器冻结(停止旋转)并且无法将其返回到初始状态.
怎么解决?

UIRefreshControl切换标签后我被卡住了,它只发生在第一个标签上.在TabBar里面我有两个带UIViewControler的标签,里面有UITableView.
我尝试过在这里建议的所有解决方案,但没有一个能为我工作.
以下是我正在做的事情.
- (void)viewDidLoad {
[super viewDidLoad];
data = [[NSMutableArray alloc] initWithArray:[[DataCache sharedCache] getData]];
[self addNavBar];
[self addDataTable];
//for refreshing the table data
UITableViewController *tableViewController = [[UITableViewController alloc] init];
tableViewController.tableView = dataTable;
refreshControl = [[UIRefreshControl alloc] init];
refreshControl.backgroundColor = [UIColor purpleColor];
refreshControl.tintColor = [UIColor whiteColor];
[refreshControl addTarget:self
action:@selector(refresh)
forControlEvents:UIControlEventValueChanged];
[dataTable addSubview:refreshControl];
tableViewController.refreshControl = refreshControl;
}
- (void)refresh {
[self loadSentData];
data = [[NSMutableArray alloc] initWithArray:[[DataCache sharedCache] getSentData]];
[self performSelectorOnMainThread:@selector(reloadData) withObject:nil waitUntilDone:NO];
}
- (void)reloadData{
[dataTable reloadData]; …Run Code Online (Sandbox Code Playgroud)