UITableView Accessory View не отображается - PullRequest
0 голосов
/ 02 июня 2011

Почему следующее не отображает правильное представление аксессуара UITableView? Это просто отображение UIAcessoryTypeCheckmark, который был выбран в файле пера.

- (UITableViewCell *)tableView:(UITableView *)tableView cellForManagedObject:(NSManagedObject *)managedObject withIndexPath:(NSIndexPath *)indexPath{

    static NSString *CellIdentifier = @"Selection";

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];

    if(cell == nil) {
        cell = tvCell;
        self.tvCell = nil;
    }   
    self.tableView.rowHeight = 70.0f;

    //Background
    BOOL useDarkBackground = NO; //odd
    if(indexPath.row %2 == 0) useDarkBackground = YES; //even
    NSString *backgroundImagePath = [[NSBundle mainBundle] pathForResource:useDarkBackground ? @"DarkBackground" : @"LightBackground" ofType:@"png"];
    UIImage *backgroundImage = [[UIImage imageWithContentsOfFile:backgroundImagePath] stretchableImageWithLeftCapWidth:0.0 topCapHeight:1.0];
    cell.backgroundView = [[[UIImageView alloc] initWithImage:backgroundImage] autorelease];
    cell.backgroundView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
    cell.backgroundView.frame = cell.bounds;

    //Checkmark
    cell.userInteractionEnabled = YES;
    NSString *checkmarkImagePath;
    checkmarkImagePath = [[NSBundle mainBundle] pathForResource:[selectedObjects containsObject:managedObject] ? @"checkSelected" : @"checkUnselected" ofType:@"png"];
    if([selectedObjects count] == 0) {
        checkmarkImagePath = [[NSBundle mainBundle] pathForResource:@"checkUnselected" ofType:@"png"];
    }   
            UIImage *checkmarkImage = [[UIImage imageWithContentsOfFile:checkmarkImagePath] stretchableImageWithLeftCapWidth:0.0 topCapHeight:1.0];
    UIImageView *imageView = [[[UIImageView alloc] initWithImage:checkmarkImage] autorelease];
    imageView.contentMode = UIViewContentModeScaleAspectFit;
    imageView.frame = CGRectMake(10.0, 10.0, imageView.frame.size.width/1.2, imageView.frame.size.height/1.2);

    return cell;

}

По какой-то причине следующее работает :

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
NSManagedObject *objectToChange = [[self fetchedResultsControllerForTableView:tableView] objectAtIndexPath:indexPath]; //The object

[tableView deselectRowAtIndexPath:[tableView indexPathForSelectedRow] animated:NO];

UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];

NSString *checkmarkImagePath = [[NSBundle mainBundle] pathForResource:[selectedObjects containsObject:objectToChange] ? @"checkSelected" : @"checkUnselected" ofType:@"png"];
UIImage *checkmarkImage = [[UIImage imageWithContentsOfFile:checkmarkImagePath] stretchableImageWithLeftCapWidth:0.0 topCapHeight:1.0];
UIImageView *imageView = [[[UIImageView alloc] initWithImage:checkmarkImage] autorelease];
imageView.contentMode = UIViewContentModeScaleAspectFit;
imageView.frame = CGRectMake(10.0, 10.0, imageView.frame.size.width/1.2, imageView.frame.size.height/1.2);

cell.accessoryView = imageView;
}

Большое спасибо!

Ответы [ 2 ]

2 голосов
/ 02 июня 2011

В вашем cellForRowAtIndexPath вы не назначаете accessoryView ячейке, как в методе didSelect.

2 голосов
/ 02 июня 2011

Не похоже, что вы добавляете UIImageView к дополнительному представлению ячейки в первом блоке кода.

Вы также протекаете повсюду. Убедитесь, что вы придерживаетесь рекомендаций по управлению памятью , изложенных Apple.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...