微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

为什么UITableView单元格上的此按钮会重新绘制自身?

如何解决为什么UITableView单元格上的此按钮会重新绘制自身?

| 我的表格单元格上有一个按钮。 但是在滚动按钮后,如下所示: 似乎有时一个按钮位于另一个按钮上方。 我怎么解决这个问题? 这是我在“ 0”中的按钮代码
        - (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;

}
    

解决方法

        首先,查看整个cellForRowAtIndexPath函数将很有帮助。 看来您没有正确考虑单元的重用。仅当从头开始创建单元时才应向该单元中添加按钮,而不是在重复使用某个单元时才应添加按钮。如果要重复使用某个单元格,则应该有一种方法可以访问它已有的按钮并对其进行必要的更改。     ,        您在其他地方调用setNeedsDisplay会导致它调用drawRect吗?     

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。