Почему эта кнопка на моей ячейке UITableView перекрашивается сама? - PullRequest
0 голосов
/ 15 июня 2011

У меня есть кнопка в ячейке просмотра таблицы.
Но после прокрутки кнопки выглядят так:

enter image description here

Похоже, иногда одна кнопка находится над другой.
Как я могу решить эту проблему?

Это мой код для кнопки в cellForRowAtIndexPath

        - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

Chapter *chapter = nil ;
UITableViewCell *cell = nil;
NSUInteger row = [indexPath row];
switch (indexPath.section) {
    case 0: 
        chapter = [[einfuerung objectAtIndex:row]retain];
        break;
    case 1: 
        chapter = [[vertiefung objectAtIndex:row]retain];
        break;
    case 2: 
        chapter = [[spezial objectAtIndex:row]retain];
        break;
}


if ([self filesFromFolderWithChapter:chapter] > 1) 
{

    static NSString *SimpleTableIdentifier = @"SimpleTableIdentifier";
    cell = [tableView dequeueReusableCellWithIdentifier: SimpleTableIdentifier];
    if (cell == nil) 
    { 
        cell = [[[UITableViewCell alloc]
                initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:SimpleTableIdentifier] autorelease];
    }
}   
else {

    static NSString *ButtonTableIdentifier = @"ButtonTableIdentifier";
    cell = [tableView dequeueReusableCellWithIdentifier: ButtonTableIdentifier];
    if (cell == nil) 
    { 
        cell = [[[UITableViewCell alloc]
                initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:ButtonTableIdentifier] autorelease];
    }

}



    NSString *firstString;
    NSString *lastString;

    switch (indexPath.section) {
        case 0: 
            chapter = [[einfuerung objectAtIndex:row]retain];
            [dataInstance extractFromString: [chapter title]: &firstString: &lastString];
            cell.textLabel.text = firstString; 
            cell.detailTextLabel.text = lastString;
            cell.backgroundColor = [UIColor whiteColor];


            break;
        case 1: 
            chapter = [[vertiefung objectAtIndex:row]retain];
            [dataInstance extractFromString: [chapter title]: &firstString: &lastString];
            cell.textLabel.text = firstString; 
            cell.detailTextLabel.text = lastString;
            cell.backgroundColor = [UIColor whiteColor];

            break;
        case 2: 
            chapter = [[spezial objectAtIndex:row]retain];
            [dataInstance extractFromString: [chapter title]: &firstString: &lastString];
            cell.textLabel.text = firstString; 
            cell.detailTextLabel.text = lastString;
            cell.backgroundColor = [UIColor whiteColor];

            break;
    }



if ([self filesFromFolderWithChapter:chapter] > 1) 
{


        //VersionButton *button = [VersionButton buttonWithType:UIButtonTypeRoundedRect];
        VersionButton *button = [[VersionButton alloc]initWithFrame:CGRectMake(500, 15, 150, 30) andTitle:@"ältere Versionen"];
        button.chapter = chapter;
        [button addTarget:self action:@selector(versionTapped:) 
         forControlEvents:UIControlEventTouchUpInside];
        [cell.contentView addSubview:button];   
        [button release];

}
    [chapter release];

return cell;

}

Ответы [ 2 ]

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

Прежде всего было бы полезно увидеть всю вашу функцию cellForRowAtIndexPath.

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

0 голосов
/ 15 июня 2011

вы вызываете setNeedsDisplay где-нибудь еще, что заставляет его вызывать drawRect?

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