UITableViewDataSource完成加载信号到UITableViewDelegate

时间:2010-08-30 19:20:46

标签: iphone objective-c uitableview

我有 UITableViewDataSource UITableViewDelegate

的单独文件

我正在UITableView上实现“下拉​​刷新”功能,并希望从 UITableViewDataSource UITableViewDelegate 发送信号,以阻止加载指示器转动

我想知道在 UITableViewDataSource UITableViewDelegate 之间发送信号的最佳方法是什么,或者是否有更好的方法来构建它,因为我觉得我打破了一些抽象障碍。

我在数据源中拥有的​​内容:

if([tableView.delegate respondsToSelector: @selector(dataSourceDidFinishLoadingNewData)]){
    [tableView.delegate dataSourceDidFinishLoadingNewData];
}

但我在协议警告中找不到'dataSourceDidFinishLoadingNewData',因为我猜,该函数未被声明为 UITableViewDelegate

的方法

3 个答案:

答案 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了解详情。