我有 UITableViewDataSource 和 UITableViewDelegate
的单独文件我正在UITableView上实现“下拉刷新”功能,并希望从 UITableViewDataSource 向 UITableViewDelegate 发送信号,以阻止加载指示器转动
我想知道在 UITableViewDataSource 和 UITableViewDelegate 之间发送信号的最佳方法是什么,或者是否有更好的方法来构建它,因为我觉得我打破了一些抽象障碍。
我在数据源中拥有的内容:
if([tableView.delegate respondsToSelector: @selector(dataSourceDidFinishLoadingNewData)]){
[tableView.delegate dataSourceDidFinishLoadingNewData];
}
但我在协议警告中找不到'dataSourceDidFinishLoadingNewData',因为我猜,该函数未被声明为 UITableViewDelegate
的方法答案 0 :(得分:1)
也许你知道,但有多种拉动刷新的开源实现。你可能想在制作自己的之前先研究一下。这是一个(只是Google上的第一个):http://github.com/leah/PullToRefresh
答案 1 :(得分:1)
只是一个答案;使用时:
if([object respondsToSelector:@selector(someMethod)]){
[object someMethod];
}
范例,你可以改为使用它:
if([object respondsToSelector:@selector(someMethod)]){
[object performSelector:@selector(someMethod)];
}
可能会有点长,但它不会给你任何警告。
答案 2 :(得分:0)
在保持事物完全抽象的同时,你可能无法做到这一点。通过tableViews委托属性调用委托的替代方法是交换保持引用。但是你甚至可以通过使用通知来告知代表加载已经完成,从而避免需要保持对彼此对象的引用。
查看NSNotificationCenter了解详情。