UITableViewCell中的UIButton在iOS7中不起作用

use*_*930 4 objective-c uibutton uitableview ios7

我在UITableViewCell中有一个UIButton,自iOS4以来一直正常工作,现在自iOS7更新后它就不再有效了.它基本上是一个空盒子的图像.当用户单击图像(UIButton)时,图像将变为复选框.我没有使用XIB.有人有什么建议吗?提前致谢.

(我已经尝试了contentView.userInteractionEnabled = NO;,[cell bringSubviewToFront:button]但这不起作用)

这是一些相关的代码:

- (UITableViewCell *)taskCell:(NSIndexPath *)indexPath table:(UITableView *)localTableView managed:(NSManagedObject *)managedTask dateFormat:(NSDateFormatter *)localDateFormatter{
    static NSString *CellIdentifier = @"Cell"; 

    UITableViewCell *cell = [localTableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
        cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier] autorelease];

        // Checkbox
        UIButton *button = [[UIButton alloc] initWithFrame:CGRectMake(-4.0f, -3.0f, 48.0f, 48.0f)];
        button.tag=kCellButtonViewTag;
        button.adjustsImageWhenHighlighted=NO;
        [button setImage:[UIImage imageNamed:@"uncheckedPriorityNone.png"] forState:UIControlStateNormal];
        [button addTarget:self action:@selector(toggleCheckedMode:) forControlEvents:UIControlEventTouchUpInside];
        [cell.contentView addSubview:button];
        [button release];
        }
}


- (IBAction)toggleCheckedMode:(id)sender{

    NSManagedObjectContext *context = [self.fetchedResultsController managedObjectContext];

    UITableViewCell *clickedCell = (UITableViewCell *)[[sender superview] superview];
    NSIndexPath *indexPath = [self.tableView indexPathForCell:clickedCell];
    Task *localTask = [self.fetchedResultsController objectAtIndexPath:indexPath];

    UIButton *button = sender;
    [button setImage:[UIImage imageNamed:@"checkedGray.png"] forState:UIControlStateNormal];
}
Run Code Online (Sandbox Code Playgroud)

Han*_*ers 5

尝试将视图添加到单元格本身,而不是添加到contentView.

所以

[cell addSubview:button];
Run Code Online (Sandbox Code Playgroud)

代替

[cell.contentView addSubview:button];
Run Code Online (Sandbox Code Playgroud)