我有一个跟随TTTableViewController的TTTableViewController - > TTDataSource - > TTModel模式。我有TTTableMoreButton,当用户点击它时,我的列表会继续加载更多项目。
如何更改此TTTableMoreButton的行为?当用户到达列表的末尾时,我希望它的行为就像单击它一样。在Facebook应用程序中,有一个这样的实现。我希望我能说出我想要的东西。
答案 0 :(得分:3)
Here是如何做到的。
完全披露:这是我的代码博客。
答案 1 :(得分:1)
这里我有自己的方法,我在coneybeare的回答之前就已经找到了。我简单地将TTTableMoreButton和TTTableMoreButtonCell类子类化,并在“ - (void)layoutSubviews”方法中,我检测到“加载更多”按钮正在出现,如果它还没有这样做,它应该开始加载更多数据。
我不确定哪种方法(coneybeaare或我的)是最好的,我期待着有关它的评论。
AutoMoreTableItem.h
@interface AutoMoreTableItem : TTTableMoreButton {
}
@end
AutoMoreTableItem.m
#import "AutoMoreTableItem.h"
@implementation AutoMoreTableItem
@end
AutoMoreTableItemCell.h
@interface AutoMoreTableItemCell : TTTableMoreButtonCell {
}
@end
AutoMoreTableItemCell.m
#import "AutoMoreTableItemCell.h"
#import "AutoMoreTableItem.h"
@implementation AutoMoreTableItemCell
- (void)setObject:(id)object {
if (_item != object) {
[super setObject:object];
AutoMoreTableItem* item = object;
self.animating = item.isLoading;
self.textLabel.textColor = TTSTYLEVAR(moreLinkTextColor);
self.selectionStyle = TTSTYLEVAR(tableSelectionStyle);
self.accessoryType = UITableViewCellAccessoryNone;
}
}
- (void)layoutSubviews {
[super layoutSubviews];
AutoMoreTableItem* moreLink = self.object;
if(moreLink.isLoading ==YES) {
return;
}
if (moreLink.model) {
moreLink.isLoading = YES;
self.animating = YES;
[moreLink.model load:TTURLRequestCachePolicyDefault more:YES];
}
}
@end
当然,在数据源实现中:
- (Class)tableView:(UITableView*)tableView cellClassForObject:(id) object {
if([object isKindOfClass:[AutoMoreTableItem class]]){
return [AutoMoreTableItemCell class];
} else {
return [super tableView:tableView cellClassForObject:object];
}
}