Three20 TTTableViewController загружается более автоматически - PullRequest
0 голосов
/ 12 июня 2011

У меня есть TTTableViewController, который следует TTTableViewController -> TTDataSource -> шаблон TTModel. У меня TTTableMoreButton, и мой список продолжает загружать больше элементов, когда пользователь нажимает на него.

Как я могу изменить поведение этого TTTableMoreButton? Когда пользователь дошел до конца списка, я хочу, чтобы он вел себя так, как если бы он был нажат. В приложении Facebook есть такая реализация. Я надеюсь, что смогу сказать, чего хочу.

Ответы [ 2 ]

3 голосов
/ 12 июня 2011

Здесь , как это сделать. полное раскрытие: Это мой код блога.

1 голос
/ 12 июня 2011

Здесь у меня есть свой подход, который я узнал незадолго до ответа Конейбира.Я просто делю на подклассы классы 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];  
    }  
}  
...