Почему не будет вызываться DisplayCell - PullRequest
1 голос
/ 31 июля 2011

в моем MainPageDataSource.m я кодирую так:

#import "MainPageDataSource.h"
#import "LoadResult.h"
#import "CustomTTTableSubtitleItem.h"
#import "CustomTTTableSubtitleItemCell.h"
#import "XYDefaultStylesheet.h"


@implementation MainPageDataSource


- (id)init {
if (self = [super init]) {
    _mainPageModel = [[MainPageMode alloc] init];
    _allResults = [[NSMutableArray alloc] init];                   
}
return self;
}


- (id<TTModel>)model {
    return _mainPageModel;
}


- (void)tableViewDidLoadModel:(UITableView*)tableView 
{

[super tableViewDidLoadModel:tableView];

NSDateFormatter* dateFormat = [[NSDateFormatter alloc] init];   

[dateFormat setDateFormat:@"yyyy-MM-dd"];
for (LoadResult *result in [(id<TabModel>)self.model results]){
    NSTimeInterval formateSeconds = [result.resourceVersionTime doubleValue];
    NSString *dataFormatted =[dateFormat stringFromDate:[NSDate dateWithTimeIntervalSince1970:formateSeconds]]; 

    NSString *textCombine = [dataFormatted stringByAppendingFormat:@"/%@/%@\n%@", 
                             result.resourceVersion, result.resourceSize, result.resourceCatalog];





    [self.items addObject:[CustomTTTableSubtitleItem itemWithTitle:result.resourceName text:textCombine 
                                                          imageURL:result.resourceImagepath URL:nil
                                                  rightButtonTitle:result.resourcePrice appRate:result.resourceRate]];


}


    TT_RELEASE_SAFELY(dateFormat);


}

- (Class)tableView:(UITableView*)tableView cellClassForObject:(id) object { 

if ([object isKindOfClass:[CustomTTTableSubtitleItem class]]) { 
    return [CustomTTTableSubtitleItemCell class];       
} else { 
    return [super tableView:tableView cellClassForObject:object]; 
}
}



- (void)tableView:(UITableView*)tableView prepareCell:(UITableViewCell*)cell forRowAtIndexPath:(NSIndexPath*)indexPath {
cell.accessoryType = UITableViewCellAccessoryNone;
}
- (UITableViewCell *)tableView:(UITableView *)tableView
     cellForRowAtIndexPath:(NSIndexPath *)indexPath {
NSLog(@"indexPath.row11111 ===== %d",indexPath.row);
UITableViewCellStyle style =  UITableViewCellStyleValue2;
CustomTTTableSubtitleItemCell *cell = (CustomTTTableSubtitleItemCell *)[tableView dequeueReusableCellWithIdentifier:@"CustomTTTableSubtitleItemCell"];
if (cell == nil) {
    NSLog(@"new le cell");
    cell = [[[CustomTTTableSubtitleItemCell alloc] initWithStyle:style reuseIdentifier:@"CustomTTTableSubtitleItemCell"] autorelease];

}

if (indexPath.row % 2 == 0) {
    cell.contentView.backgroundColor = TTSTYLEVAR(tableCellColor1);
}else {
    cell.contentView.backgroundColor = TTSTYLEVAR(tableCellColor2);
}

return cell;
}



- (void)dealloc {
TT_RELEASE_SAFELY(_mainPageModel);
[super dealloc];
}

@end

willDisplayCell никогда не вызывался. Что не так?

1 Ответ

1 голос
/ 01 августа 2011

Учитывая тот факт, что в классе TTTableViewDataSource такой функции нет, я не уверен, почему она должна вызываться.

возможно, вы имеете в виду эту функцию:

 - (void)tableView:(UITableView*)tableView cell:(UITableViewCell*)cell
    willAppearAtIndexPath:(NSIndexPath*)indexPath;

ЭтоФункция вызывается каждый раз, когда ячейка таблицы отображается в TTTableView.У меня никогда не было необходимости использовать это.Я думаю, что лучше хранить всю логику в классах ячеек таблицы.

...