我有一個TTTableViewController,它遵循TTTableViewController - > TTDataSource - > TTModel模式。我有TTTableMoreButton,當用戶點擊它時,我的列表繼續加載更多的項目。Three20 TTTableViewController自動加載
如何更改此TTTableMoreButton的行爲?當用戶到達列表的末尾時,我希望它表現得像點擊一樣。在Facebook應用程序中,有這樣的實現。我希望我能說出我想要的。
我有一個TTTableViewController,它遵循TTTableViewController - > TTDataSource - > TTModel模式。我有TTTableMoreButton,當用戶點擊它時,我的列表繼續加載更多的項目。Three20 TTTableViewController自動加載
如何更改此TTTableMoreButton的行爲?當用戶到達列表的末尾時,我希望它表現得像點擊一樣。在Facebook應用程序中,有這樣的實現。我希望我能說出我想要的。
在這裏,我有我自己的方法,我發現之前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];
}
}
祝賀你解決問題,但我覺得加載更多單元的邏輯不應該包含在單元本身中,而應該包含在控制器/數據源層中。它更接近MVC – coneybeare 2011-06-12 17:29:39
剛剛使用了你的代碼的一個微妙的變種,謝謝:),順便說一下,'AutoMoreTableItem'並不是真的需要,因爲我猜你沒有其他的'TTTableMoreButton',我也更喜歡'willMoveToSuperview'來調用'負載:更多:'。同樣,你的'setObject'覆蓋與'super'完全相同:它是無用的,更糟的是,通過調用'[super setObject:object]'已經完成了一些事情。 – 2011-07-19 16:52:17
我就已經找到並實施解決方案,如果有人想我可以分享它。 – 2011-06-12 02:01:47